【问题标题】:Adding centered labels to bargraph.CI向 bargraph.CI 添加居中标签
【发布时间】:2015-09-12 21:42:45
【问题描述】:

我已经在这个问题上工作了一段时间,但无济于事,现在我向大家寻求帮助/建议。总体目标是从 Tukey HSD 函数中获取成对比较输出组,并将它们直接添加到分组条形图中。我对这些比较进行了多次迭代,因此理想的目标是在我运行脚本时自动拥有这个中心——如果可能的话,不要根据坐标进行手动定位。到目前为止,我有一个可用的 bargraph.CI 脚本、一个可用的 ANOVA 和一个可用的 post-hov 脚本——现在我只需要它们一起玩得很好。我面临的问题是 Tukey HSD 组标签与图形的条不对齐(即输出顺序与图形顺序不对应)并且它们没有居中。查看我的示例脚本之后生成的输出/图表。感谢您的任何帮助!

一些示例数据: https://www.dropbox.com/s/ulpgrmv731yc2aw/CFLold.csv?dl=0

我确实有“声誉”来发布我目前所拥有的示例图片,所以这里是一个:

https://www.dropbox.com/s/5v7kgunapufk48t/Untitled.tiff?dl=0

这是我目前所拥有的:

library(sciplot)
library(agricolae)
mod.li <- aov(BA_Li ~ Year, CFL.old)
HSD.li <- HSD.test(mod.li,"Year", alpha = 0.05, group=TRUE, console=TRUE, main="Live Basal Area")

bg.li <- with(CFL.old, bargraph.CI(x.factor=Year, response=BA_Li,ylim= c(0,800),
              lc=FALSE, err.width = .03, xlab="Year of SB Outbreak", ylab = "Li (m2/ha)",
              x.leg=3.3, cex.leg=1, cex.names=1, cex.lab = 1,family = "Times",
              ci.fun=function(x) {c(mean(x) - 1.96*se(x), mean(x) + 1.96*se(x))}))
text(x=CFL.old$Year, labels=as.character(HSD.li$groups$M),cex=1,pos=3, xpd=T, family="Times")

【问题讨论】:

    标签: r text graphics labels


    【解决方案1】:

    你说得差不多了。

    你应该写的

    text(x = bg.li$xvals, labels = as.character(HSD.li$groups$M), cex = 1, pos = 3, xpd = T, family = "Times")
    

    查看bg.li的返回值

    【讨论】:

    • 感谢所有回复 - 他们非常有帮助。关于更改原始代码的 text() 行并添加 y=0 术语的建议修复了自动居中问题 - 谢谢!
    • 我希望你们中的一些人可能对如何回答我的问题的第二部分有所了解 - 确保 Tukey HSD 输出中的字母值与正确的 x 轴值相对应。例如,我的输出显示 1940 年的术语是“a”,因为它是输出中排序的第一个字母,而实际上“a”应该对应于 Endemic 类。这意味着来自 Tukey HSD 输出的组/治疗与条形图上的 x 轴/组不对应。有什么想法吗?
    • 试试m &lt;- with(HSD.li,groups[order(groups$trt),])。然后,m$M 将有正确的顺序。
    • 漂亮!非常感谢 - 我一直试图解决这个问题太久了。感谢您的帮助!
    【解决方案2】:

    不是你问的,但这是使用ggplot 的解决方案。

    library(ggplot2)
    ggplot(CFL.old, aes(x=factor(Year), y=BA_Li)) + 
      stat_summary(fun.data=function(y)c(ymax=mean(y)+1.96*se(y),ymin=0), geom="errorbar", width=0.1)+
      stat_summary(fun.y=mean, geom="bar", fill="grey70", color="black")+
      geom_text(data=HSD.li$groups, aes(x=sub("\\s+","",trt), y=0, label=M), vjust=-1)+
      coord_cartesian(ylim=c(-2,100), )+
      labs(x="Year of SB Outbreak", y="Li (m2/ha)") +
      theme_bw()+theme(panel.grid=element_blank())
    

    【讨论】:

    • 另外,我很欣赏使用 ggplot 的解决方案,它非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多