vlambda博客
学习文章列表

【R语言】barplot柱状图+散点图+误差棒

【R语言】barplot柱状图+散点图+误差棒




今日绘图

【R语言】barplot柱状图+散点图+误差棒

【R语言】barplot柱状图+散点图+误差棒

今天做这个图

涉及到的很多细节问题:

  1. 纵坐标标签水平显示

  2. 横坐标下移

  3. barplot叠加散点图

  4. 柱状图加误差棒

  5. excel计算mean(平均值)

  6. excel计算se(标准误)

  7. R语言创建矩阵和表格



所有的细节

都包含在这篇文章里

详情请看代码~

都有相应的解释说明~


所用到的数据

都在下方代码里~

可以复制粘贴到

R软件或RStudio中

直接出图~~~

【R语言】barplot柱状图+散点图+误差棒

代码如下
rm(list=ls()) #清除环境

op=par(mar=c(5,5,1,1))#设置图离边缘的距离

#做一个画柱状图的矩阵
data <- c(138302457,33047658#需要用到的所有数据,用excel的AVERAGE函数算出的平均值(mean)
rnames <- c("PLC/PRF/5","HepG2"#行名
cnames <- c(""#列名
mymatrix <- matrix(data,nrow=2,ncol=1,byrow=F,#2排1列,按列填充
                   dimnames=list(rnames,cnames))
mymatrix #查看已做好的这个矩阵

#做一个画散点图的表格
value <- c(18167561,42749923,38225489,163789467,127506152,123611752#需要用到的数据
group <- c("b","b","b","a","a","a"#数据所对应的类别,将按字母顺序出图,a对应的数据将出现在第一个
data2 <- data.frame(value,group) #将制作的表格命名为data2,第一列为value,第二列为group

#用矩阵画柱状图
barplot(mymatrix,col=c("white","white"),border = c("black","black"),
        #柱子白色填充,边框都设置为黑色,方便后期用图片处理软件(如:AI、PS)选择边框并将边框加粗
        xlab="",ylab="SOAT1 protein abundance",beside=T#两个柱子平行
        horiz = F#柱子垂直于x轴
        cex.lab=1.5#坐标轴标题的大小
        font.lab=2#加粗
        space=0.2#两个柱子之间间隔0.2
        axes=F#不画坐标轴
        ylim=c(-1*10^7,1.7*10^8), #y轴范围多设置一个刻度,这样才能使横坐标不与柱子底部重叠
        xlim=c(0.1,2.4)) #调整横坐标范围使柱子左侧不与纵坐标间隔太远,调整了起始点,就要根据柱宽/间隔调整终点

#用表格画散点图
stripchart(value~group,data=data2,method="jitter"#方法设置为jitter(随机分离所有点)
           #method默认为“overplot”(值相同的数据点将重合);还可设置为“stack"(层叠堆放值相同的数据点)
           vertical = T,add=T, jitter=0.1#垂直,叠加在已有的图上,散点分布的范围为0.1
           col=c("#f65c2a","#33a6e5"),pch=17,cex=2,at=c(0.7,1.9)) #颜色,散点形状,散点大小,散点出现的位置

#用画箭头的函数画误差棒
arrows(x0=0.7, y0=138302457, x1=0.7, y1=151095455#用excel的STDEV(n1,n2,n3...)/SQRT(n)算出se(标准误),y1=mean+se
       angle=90,col="#f65c2a"#箭头设置为90°就变成了“T”字形,设置颜色
       lwd = 3, length = 0.2#线条粗细,横线长度
arrows(x0=1.9, y0=33047658, x1=1.9, y1=40601478, angle=90,col="#33a6e5",
       lwd = 3, length = 0.15)

#设置坐标轴
axis(2,at=c(0,5*10^7,1*10^8,1.5*10^8,1.7*10^8), #2是左侧纵坐标,at设置刻度位置
     label=c("0","5","1","1.5","1.7"), #太长的标签后期用图片处理软件(如:AI、PS)加上去,现在随便设置就行
     lwd=3,lwd.ticks = 3#刻度标签,线粗细,ticks(小短线)粗细
     cex.axis=1#标签大小
     las=1#标签设置为水平
     font = 2#标签加粗
axis(1,at=c(0.2,2.4),label=c("",""),lwd.ticks = NA,lwd=3#1是下方横坐标,去掉ticks和标签,只是做一条齐平柱子的横线
axis(1,at=c(0.7,1.9),label=c("PLC/PRF/5","HepG2"),lwd=3,lwd.ticks = 3,cex.axis=1.3,font = 2#设置横坐标


往期文章








END



排版 | 金忆秋

文字 | 金忆秋(侵删)

图片 | 金忆秋(不可商用)