R语言分组箱线图添加显著性标记简单小例子

部分示例数据如下
image.png
  • 第一列是数值
  • 第二列是处理一
    -第三列是处理二

最终出图如下

image.png

这里自动做统计检验的函数是 stat_compare_means()

首先是做箱线图和小提琴图的代码

读入数据

df<-read.csv("boxplot_example_1.csv",
             header=T)
head(df)

作图

library(ggplot2)
ggplot(data=df,aes(x=dose,y=len,fill=supp))+
  geom_violin()+
  geom_boxplot(width=0.2,
               position = position_dodge(0.9))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("yellowgreen", "violetred1"))
image.png
添加显著性检验的P值

这个函数来自于ggpubr这个包,只需要指定根据那一列来分组就可以了

library(ggpubr)
ggplot(data=df,aes(x=dose,y=len,fill=supp))+
  geom_violin()+
  geom_boxplot(width=0.2,
               position = position_dodge(0.9))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("yellowgreen", "violetred1"))+
  stat_compare_means(aes(group=supp))

默认的是Wilcoxon Rank Sum and Signed Rank Tests,如果要用t检验指定method参数

ggplot(data=df,aes(x=dose,y=len,fill=supp))+
  geom_violin()+
  geom_boxplot(width=0.2,
               position = position_dodge(0.9))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("yellowgreen", "violetred1"))+
  stat_compare_means(aes(group=supp),
                     method = "t.test")

如果想把P值改成星号,直接加label=“p.signif”参数

ggplot(data=df,aes(x=dose,y=len,fill=supp))+
  geom_violin()+
  geom_boxplot(width=0.2,
               position = position_dodge(0.9))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("yellowgreen", "violetred1"))+
  stat_compare_means(aes(group=supp),
                     method = "t.test",
                     label="p.signif")

这里如果不显著会在图上显示ns,如果不想要ns,可以加hide.ns = TRUE参数

星号的位置可以手动指定,用label.y = c(26,31)参数

接下来是添加线段

使用到的是ggsignif这个包

  geom_signif(annotations = c("",""),
              y_position = c(25,30),
              xmin = c(0.8,1.8),
              xmax = c(1.2,2.2),
              tip_length = c(0.02,0.4,0.02,0.2))
  • annotations 参数后指定线段上跟什么内容,这里上面已经自动添加好星号了,所以不要任何内容了

  • y_position 线段的位置

  • xmin 线段的最左端

  • xmax 线段的最右端

  • tip_length 线段的垂直长度

完整代码

df<-read.csv("boxplot_example_1.csv",
             header=T)
head(df)
library(ggplot2)
library(ggpubr)
library(ggsignif)

ggplot(data=df,aes(x=dose,y=len,fill=supp))+
  geom_violin()+
  geom_boxplot(width=0.2,
               position = position_dodge(0.9))+
  theme_bw()+
  theme(panel.grid = element_blank())+
  scale_fill_manual(values = c("yellowgreen", "violetred1"))+
  stat_compare_means(aes(group=supp),
                     label="p.signif",
                     method = "t.test",
                     hide.ns = TRUE,
                     label.y = c(26,31))+
  geom_signif(annotations = c("",""),
              y_position = c(25,30),
              xmin = c(0.8,1.8),
              xmax = c(1.2,2.2),
              tip_length = c(0.02,0.4,0.02,0.2))

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

今天的推文内容会录制视频放到B站,欢迎大家关注我的B站账号 小明的数据分析笔记本

image.png

你可能感兴趣的:(R语言分组箱线图添加显著性标记简单小例子)