首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有相同x轴的两个结果的多面图中添加显着性水平

在具有相同x轴的两个结果的多面图中添加显着性水平
EN

Stack Overflow用户
提问于 2018-02-03 01:23:13
回答 2查看 1.3K关注 0票数 3

我知道有许多问题已经公开,可以在多面图中增加ggplot2的显着性水平。然而,作为一个R初学者,我没有为我的情节找到解决方案。我的数据(.txt文件)可在此链接中找到:

1drv.ms/t/s!AsLAxDXdkA9Mg8oXdJ-qxD5AeB4KAw

有四列:三个因子水平(温度,寄生蜂种和行为)和一个数字水平(寄生和杀死寄主的数量)。

我用下面的代码运行绘图:

代码语言:javascript
复制
    ggplot(mydata, aes(x = temperature, y = value, fill = species)) +  
facet_grid(. ~ behavior) +
stat_summary(fun.y = mean, geom = "bar", position = "dodge", stat="identity") +
stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1) +
labs(x = "Temperature", y = "Nº of parasitized or host-killed larvae") +
theme(legend.position = "bottom", legend.title = element_blank(),  legend.text = element_text(size = 11, face = "italic"))

现在我想在每个图中添加显着性水平,分别比较两种温度下寄生和杀死宿主的结果。所以我在每个图中有6个对比度。我使用函数stat_compare_means测试了该选项。然而,正如Rblogger教程(https://www.r-bloggers.com/add-p-values-and-significance-levels-to-ggplots/)中所建议的,我应该列出我想要比较的内容。但是,在这种情况下,我有两个25°C的结果和两个30°C的结果,我如何创建列出所有对比度的列表?如果有人能为我澄清如何解决这个问题,那将对我有很大帮助。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-03 02:13:15

stat_compare_means“开箱即用”(这是有意义的,因为它使用了ggplot函数中定义的分组。

代码语言:javascript
复制
ggplot(mydata, aes(x = temp, y = value, fill = factor(species))) +  
  facet_grid(. ~ behavior) +
  stat_summary(fun.y = mean, geom = "bar", position = position_dodge(width = 1), stat="identity") +
  stat_summary(fun.data = mean_sdl, geom="errorbar", position = position_dodge(width = 1), width=0.25, stat="identity", fun.args = list(mult = 1)) +
                 labs(x = "Temperature", y = "Nº of parasitized or host-killed larvae") +
                 theme(legend.position = "bottom", legend.title = element_blank(),  legend.text = element_text(size = 11, face = "italic")) + 
  stat_compare_means(method = "t.test")

或者,切换x和fill变量:

代码语言:javascript
复制
ggplot(mydata, aes(x = factor(species), y = value, fill = factor(temp))) +  
  facet_grid(. ~ behavior) +
  stat_summary(fun.y = mean, geom = "bar", position = position_dodge(width = 1), stat="identity") +
  stat_summary(fun.data = mean_sdl, geom="errorbar", position = position_dodge(width = 1), width=0.25, stat="identity", fun.args = list(mult = 1)) +
  labs(x = "Temperature", y = "Nº of parasitized or host-killed larvae") +
  theme(legend.position = "bottom",  legend.text = element_text(size = 11, face = "italic")) + 
  stat_compare_means(method = "t.test")

票数 2
EN

Stack Overflow用户

发布于 2018-02-05 20:31:00

感谢@thc的帮助和耐心。当我决定在错误栏上使用字母时,我必须为每个字母创建一个新的data.frame,并在它们中添加geom_text。在测试了许多x和y值以将字母插入到正确的点之后,下面的代码得到了正确的结果。但它肯定有一种我不知道的更容易的方法。

代码语言:javascript
复制
    sigvals1 <- data.frame(x=0.75,y=222.4, text=c("a"), behavior=c("Parasitism"))
    sigvals2 <- data.frame(x=1.207,y=190.55, text=c("a"), behavior=c("Parasitism"))
    sigvals3 <- data.frame(x=1.75,y=117.7, text=c("b"), behavior=c("Parasitism"))
    sigvals4 <- data.frame(x=2.209,y=103, text=c("b"), behavior=c("Parasitism"))
    sigvals5 <-data.frame(x = 0.75, y = 74.8, text=c("A"), behavior = c("Host-Killing"))
    sigvals6 <-data.frame(x = 1.20, y = 92.97, text=c("B"), behavior = c("Host-Killing"))
    sigvals7 <-data.frame(x = 1.74, y = 49.8, text=c("C"), behavior = c("Host-Killing"))
    sigvals8 <-data.frame(x = 2.196, y = 43, text=c("C"), behavior = c("Host-Killing"))

    plot + 
geom_text(data=sigvals1, aes(x=x,y=y, label=text, fill=NA), hjust=0) + 
      geom_text(data=sigvals2, aes(x=x,y=y, label=text, fill=NA), hjust=0) +
      geom_text(data=sigvals3, aes(x=x,y=y, label=text, fill=NA), hjust=0)+
      geom_text(data=sigvals4, aes(x=x,y=y, label=text, fill=NA), hjust=0) +
      geom_text(data=sigvals5, aes(x=x,y=y, label=text, fill=NA), hjust=0) +
      geom_text(data=sigvals6, aes(x=x,y=y, label=text, fill=NA), hjust=0) +
      geom_text(data=sigvals7, aes(x=x,y=y, label=text, fill=NA), hjust=0) +
      geom_text(data=sigvals8, aes(x=x,y=y, label=text, fill=NA), hjust=0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48587854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档