errorbar图在很多文章中都是可见的,其意义也就是展现两组数据的差异性,柱高代表的一组数据的均值,顶部的横线代表的该组数据的标准差。为了方便广大学者也有很多现成的工具可以绘制errorbar图,例如ploty,origin甚至Excel都是可以的。我们今天给大家分享下在R语言中如何实现errotbar图的绘制,同时把图的每一部分都拆开,实现在R语言中任意调整。
首先,我们来看下我们需要的必备函数:barplot,arrows,lines,text,axis。对于以上函数我不一一展开赘述了,大家不了解的话自行百度或者查看Help。
然后就是样例程序了。首先我们自己直接生成两组组数据的均值以及标准差并标记两组的组名分别是“Normal”,“Cancer”。
a=data.frame(mean=c(5,9),sd=c(10,15))
rownames(a)=c('Normal','Cancer')
接下来就是先绘制Bar图。
b <- barplot(a$mean, names.arg =rownames(a), col = c("green", "blue"), ylim = c(0, 20),axes = F, font = 2)
核心的部分来了,那就是生成标准差的的顶部横线。
arrows(b[1], a$mean[1], b[1], a$sd[1],angle = 90)
arrows(b[2], a$mean[2], b[2], a$sd[2], angle= 90)
是不是已经看到曙光了,细节还是很重要的,接下来添加顶部注释。
lines( x = c(b[1], b[1], b[2], b[2]), y =c( a$sd[1] * 1.06 , a$sd[2] * 1.16, a$sd[2]* 1.16, a$sd[2] * 1.06), lty = 2)
text( x = b[1] (b[2] - b[1]) / 2, y = a$sd[2]* 1.16, label = "****", cex = 2, adj = c(0.5, 0)) #差异P-value注释
text(x=b[1],y = a$sd[2] * 1.3,label ="n=12", cex = 1)#样本数注释
text(x=b[2],y = a$sd[2] * 1.3,label ="n=16", cex = 1) #样本数注释
最后一步就是坐标轴了,坐标轴跟随数据的需要四个方向随便摆放,我们以左边的坐标轴为例。其中参数side也就是对应的哪个方向1代表底部,2代表左侧,3代表顶部,4代表右边。
axis(side = 2, lwd = 2, font = 2, cex =1.5)
下面就是最终成果了:
总结,以上只是errorbar的绘制过程,前期的数据处理还是需要自己进行认真处理,最后才能让自己的图更有意义。