部分示例数据如下
- 第一列是数值
- 第二列是处理一
-第三列是处理二
最终出图如下
这里自动做统计检验的函数是 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"))
添加显著性检验的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站账号 小明的数据分析笔记本