显著性标记箱线散点图
本篇笔记的内容是在R语言中利用ggplot2,ggsignif,ggsci,ggpubr等包制作箱线散点图,并计算指定变量之间的显著性水平,对不同分组进行特异性标记,最终效果如下。
加载R包
library(ggplot2) library(ggsignif) library(ggsci) library(ggpubr)
载入示例数据
本次使用R语言自带的数据集mpg进行演示,内含不同汽车的相关数据指标。
df <- mpg head(mpg)
进行绘图
ggplot(df,aes(class,hwy))+ geom_boxplot(aes(fill=class))
首先绘制出一张普通的箱线图,填充颜色与车型分类class变量有关,然后在其基础上添加图层。下面检测compact\~pickup
和subcompact\~suv
的相关性,采用t测验,标注信息与横线距离0.1,两端竖线距离0.05
ggplot(df,aes(class,hwy))+ geom_boxplot(aes(fill=class))+ geom_signif( comparisons = list( c("compact","pickup"), c("subcompact","suv") ), #检测两者之间的差异显著性 map_signif_level = T, #添加星号标记 test = "t.test", #检测方法 vjust=0.1, #标注和横线的距离 tip_length = 0.05 #两端短竖线的长度 )
现在可以从图中看出显著性检验的结果,如果想显示p值,只需要将map_signif_level
改为F即可,接下来对图片添加注释信息。
ggplot(df,aes(class,hwy))+ geom_boxplot(aes(fill=class))+ geom_signif( comparisons = list( c("compact","pickup"), c("subcompact","suv") ), #检测两者之间的差异显著性 map_signif_level = T, #添加星号标记 test = "t.test", #检测方法 vjust=0.1, #标注和横线的距离 tip_length = 0.05 #两端短竖线的长度 )+ geom_signif( annotations = c("one","two"), #添加注释 y_position = c(40,42),xmin = c(2,1),xmax = c(5,3) #添加的位置 )
添加位置信息使用annotations
参数,设置信息后利用位置参数进行标注。添加散点图的图层,设置点的颜色和位置,更改箱线图的透明度为70%,最后,再对结果进行主题修改和美化,最终呈现如下效果:
ggplot(df,aes(class,hwy))+ geom_point(aes(color = class),position = "jitter")+ geom_boxplot(aes(fill=class),alpha=0.7)+ geom_signif( comparisons = list( c("compact","pickup"), c("subcompact","suv") ), #检测两者之间的差异显著性 map_signif_level = T, #添加星号标记 test = "t.test", #检测方法 vjust=0.1, #标注和横线的距离 tip_length = 0.05 #两端短竖线的长度 )+ geom_signif( annotations = c("one","two"), #添加注释 y_position = c(40,42),xmin = c(2,2),xmax = c(5,3) #添加的位置 )+ scale_y_continuous(limits = c(10,48))+ theme_bw()+ theme( legend.position = "none", axis.title = element_text(size = 15,face = "bold"), axis.text.x = element_text(size = 12,hjust = 1,angle = 45,color = "black"), axis.title.y = element_text(size = 12,color = "black"))
各组显著性比较
载入数据
仍然使用mpg数据集,不过需要注意的是,将class变量变为因子型,因为这样可以在对比过程中按照一定的顺序依次进行。compare_means函数能够对不同变量进行假设检验,com_list变量储存了比较的不同分组,利用for循环生成两两配对的比对列表。
df <- mpg df$class <- as.factor(df$class) levels(df$class) compare <- compare_means(hwy~class,df,method = "t.test") com_list <- list() for (i in 1:nrow(compare)){ com_list[[i]] <- c(compare$group1[i],compare$group2[i]) }
开始绘图
该步骤使用ggplot绘图,方法和之前的一样,不过这里显示了每个变量之间的两两比较结果。
ggplot(df,aes(class,hwy))+ geom_boxplot(aes(fill=class))+ stat_compare_means(comparisons = com_list, test = "t.test", step.increase = 0.1, map_signif_level = T)+ theme_bw()+ scale_fill_jco()
END
© 素材来源于网络,侵权请联系后台删除
往期推荐: