假设我们现在有CC,CG,GG三种基因型及三种基因型对应的表型,我们现在想要画出不同的基因型对应表型的棒状图及误差棒。整个命令最重要的就是最后一句了,用arrows函数画误差棒。用到的R语言如下:

data<-read.csv("E:/model/data.csv",sep=" ",header=T)#导入数据data
mean_CC<-mean(data[,1])#计算CC基因型对应的表型的平均值
mean_GG<-mean(data[,2])
mean_GC<-mean(data[,3])
install.packages("plotrix")#安装plotrix包计算标准误
library("plotrix")
SE_CC<-std.error(data[,1])#计算CC基因型对应表型平均值的标准误
SE_GG<-std.error(data[,2])
SE_GC<-std.error(data[,3])
density<-c(mean_CC,mean_GC,mean_GG)#画分布图
snp_name<-c("CC","GC","GG")
barCenters<-barplot(beside=T,density,snp_name,border="black",col=c("purple","green3","blue"),density=c(5,5,5),width=c(2,2,2),space=c(1.5,1.5,1.5),ylim=c(0,10))#beside:逻辑参数。如果FALSE,那么将绘画堆叠式的条形;如果是TRUE,将绘画并列式条形。space:表示棒状图直接的距离,ylim:表示Y轴的取值范围
d<-data.frame(snp_name<-c("CC","GC","GG"),SE<-c(0.038,0.130,0.594),mean<-c(5.44,5.88,6.36))#创建一个基因型平均值及标准误的数据框
title(xlab="Genotype",ylab="Density",main="Density in rs141626761",cex.lab=1.5,cex.main = 2.5, font.main= 2)#cex.lab坐标轴字体大小
arrows(barCenters,d$mean-d$SE*2,barCenters,d$mean+d$SE*2, length=0.05, angle=90, code=3)#用arrows函数画误差棒

效果图如下:

R语言画棒状图(bar chart)和误差棒(error bar)-编程知识网