【R语言】barplot柱状图+散点图+误差棒
今天做这个图
涉及到的很多细节问题:
纵坐标标签水平显示
横坐标下移
barplot叠加散点图
柱状图加误差棒
excel计算mean(平均值)
excel计算se(标准误)
R语言创建矩阵和表格
所有的细节
都包含在这篇文章里
详情请看代码~
都有相应的解释说明~
所用到的数据
都在下方代码里~
可以复制粘贴到
R软件或RStudio中
直接出图~~~
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
排版 | 金忆秋
文字 | 金忆秋(侵删)
图片 | 金忆秋(不可商用)