如何在ggplot2条形图中显示Tukey事后测试的显着比较?

问题描述

我有一个包含几个变量的数据集,如下所示:

    Competitor Disturbance  Group     MT       CVt
1           M           P       A   17.416667  63.39274
2           M           P       A   11.055556  91.32450
3           M           C       N   13.928571  78.11438
4           B           C       N   13.500000  61.20542
5           B           T       E   12.700000  48.11819
6           B           T       E   27.250000  63.44356

我制作了一个GLMM(mMT1),它具有3个预测变量(竞争者,干扰和群体),1个响应(MT)和1个随机因子(物种,示例数据集中未显示)。

在拟合和检查模型之后,我用包emmeans计算了ls均值:

ls_MT <- emmeans(mMT1,pairwise~Disturbance*Competitor*Group,type="response")

并进行了事后测试:

post_MT  <- emmeans(mMT1,transform="response",component="cond",list(~Disturbance|Competitor|Group,~Competitor|Group|Disturbance,~Group|Disturbance|Competitor))
pairs(post_MT)

最后,我根据ls的均值和se制作了带有ggplot2的条形图。

ggplot(ls_MT,aes(x=Disturbance,fill=Competitor,y=response))+
  geom_bar(stat="identity",position=position_dodge())+
  facet_grid(cols=vars(Group))+labs(y = "log10(MT)")+
  scale_color_manual(values=c("#2ca02c","#d62728"))+
  geom_errorbar(aes(ymin=ls_MT$lower,ymax=ls_MT$upper),width=.2,position=position_dodge(.9))+
  theme_light()

产生如下图:

Barplot

目前,我正在努力解决两件事:

  1. 有没有一种方法可以使条形图并排显示,而不必按组进行分面?看起来还可以,但我希望它们是一个单一的地块,而不是三个并排

  2. 如何在图表上注释事后测试的比较结果?我已经看到,有几个函数可以执行单独的测试(例如stat_compare_means)并绘制这些结果,但是我找不到Tukey事后测试的解决方案。另一个解决方案可能是添加

      geom_signif(map_signif_level = c(" * * * "=0.001," * * "=0.01,"*"=0.05),comparisons = list(c("P","C"),c("P","T"),c("C","T"))
    

但是将每个干扰(P,T,C)的B和M(竞争对手)值合并在一起。在这种情况下,我实际上想比较P,T和C中的B和M。甚至更好的是,如何指定要显示事后结果的小节?例如,我想将A-T-B与E-T-B等进行比较。

我希望我足够清楚,并且我将非常感谢任何可以提供帮助的人! :))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...