R做截断柱状图并加显著性统计
本教程全部是基于
ggpubr
画的,当然ggplot2
更好,但是代码太复杂,还要另外计算均数和标准差,ggpubr
可以直接统计均数和标准差,所以本着偷懒的原则就用ggpubr
了。
首先准备一个如下的表格,主要有三列,一个分组,一个值,还有一个表型
做柱状图比较简单,加显著性统计也有教程,但对于表达丰度相差较大的图,就会有明显差异,比如说直接出图是这样的,很难比较直观
从结果来看,NC组最大值约1,OE组的最小值大约在20左右,因此可以在1.5-10左右截断,然后先截断一下,然后拼接一下,是不是就好看多了
有一个包叫
gg.gap
也可以实现截断,但是截断完以后显著性标记没了,分组也没了,当然gg.gap
是基于ggplot2
的,我这个是用ggpubr
画的,可能存在这个问题,如果直接用ggplot2出图的画,应该是不存在这个问题的,有心人的话可以自己去验证
gg.gap(plot=p,segments=c(1.5,10), ylim=c(0,70))
截图主要是两部分图组成,下部分主要是最小值部分,不包括分组和显著性统计结果,定义为p1,上部分应包括分组和显著性统计结果,定义为p2,然后使用patchwokr
拼一下,可以平均拼接,也可以按比例拼接
library(ggpubr)
p1<-ggbarplot(pcr,"cell",'value',add = 'mean_se',error.plot = 'upper_errorbar',fill='group',palette = 'aaas',position=position_dodge(0.75),legend = "none",ggtheme=theme_minimal())+ coord_cartesian(ylim = c(0,1.5)) +labs(x=NULL,y=NULL,fill=NULL)
#使用ggbarplot函数,直接计算均数和标准差,只显示上部分误差,从0-1.5截断,可以自己定义配色,比如按aaas配色,使用清爽的theme_minimal()主题,把x,y值全都清空。
p2<-ggbarplot(pcr,"cell",'value',add = 'mean_se',error.plot = 'upper_errorbar',fill='group',position=position_dodge(0.75),legend = 'top',palette = 'aaas',ggtheme=theme_minimal())+theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) + coord_cartesian(ylim = c(10,70))+stat_compare_means(aes(group = group),method = 't.test', label = "p.signif") +labs(x=NULL,y=NULL)
#aaas配色,上部分误差,选择10-70的范围,加显著性统计,加分组标签
library(patchwork)
p2/p1 #拼图
大功告成
然后PS或AI调整一下就行
作者:欧阳松
原文链接:https://www.jianshu.com/p/762bcae21f74