如何解决有没有办法将 HSD.test 的结果从 agricolae 直接导入到 ggplot2 中的 geom_text() 中?
我正在创建图表,显示几个警告信号相对于它们警告的事件的功效。该图基于一个由多次运行模型并整理结果的函数生成的数据帧:
t type label early
4 847 alarm alarm 1 41
2 849 alarm alarm.2 39
6 853 alarm alarm.3 35
5 923 alarm alarm.4 -35
7 1003 alarm alarm.5 -115
但是有十几个警报,每个警报 n 次(通常为 20 - 100)一个值,每个值略有不同,具体取决于模型中内置的随机和随机变量。
我将结果放入 lm
a.lm <- lm(log(early + 500) ~ label,data = alarm.data)
并在检查假设满足后,运行单向方差分析
anova(a.lm)
然后是 tukey 事后测试
HSD.test(a.lm,trt = "label",console = TRUE)
产生什么
log(early + 500) groups
alarm.1 6.031453 a
alarm.2 6.015221 a
alarm.3 6.008366 b
alarm.4 5.995150 b
alarm.5 5.921384 c
我有一个函数,它根据整理的数据生成一个 ggplot2 图形,然后我手动添加 +geom_text(label = c("a","a","b","c")
或任何适当的字母。有没有办法概括最后一步?直接从 HSD.test 的结果中调用字母。如果我把 HSD.test 的结果放到一个对象中
a.test <- HSD.test(a.lm,console = TRUE)
我可以使用 a.test$groups
调用结果并专门使用 a.test$groups$groups
调用字母分组,但我对操作列表的了解不足以使其对我有用。虽然 ggplot 中标签的顺序是可预测的,但 HSD.test 结果中组的顺序不是,并且在模型运行函数的迭代之间可能会有很大差异。
如果有人有任何见解,我将不胜感激。
解决方法
好吧,我刚发布问题就遇到了一个解决方案。
如果你把 HSD.test 的输出变成一个对象
a.test <- HSD.test(ram.lm,trt = "label")
然后将组列表转换为数据框
a.df <- as.data.frame(a.test$groups)
行索引是报警名称而不是编号
a.df
log(early + 500) groups
alarm.1 6.849082 a
alarm.2 6.842465 a
alarm.3 6.837438 a
alarm.4 6.836437 a
alarm.5 6.812714 a
所以它们可以在函数内部被专门调用到 geom_text 中
a.plot +
geom_text(label = c(a.df["alarm.1",2],a.df["alarm.2",a.df["alarm.3",a.df["alarm.4",a.df["alarm.5",2])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。