Fig4-a ggplot2绘制箱线图叠加散点图2020-12-
2022-04-17 本文已影响0人
RashidinAbdu
简介:
箱线图叠加散点图是数据表达中常用的一种方式。ggplot2包支持图形叠加,可以很好的实现我们想要的效果。由于使用ggpolt2包绘制的箱线图的末端没有短横线,可以采用误差条图来绘制箱线图胡须末端没有短横线。
因此,可采用三个图层叠加实现:误差条图+箱线图+散点图。
1.数据与要求:
需要的数据用Excel准备并存为CSV格式,数据如下所示:
image.png
Data1<-read.csv(file.choose())
查看数据首六行:
head(Data1)
看到:
image.png
2.具体实现
开始作图:
rm(list = ls()) #清除工作区
#安装并加载包
library(ggplot2)#首次用需要先安装install.packages('ggplot2')
#如果报错也可以用这种方式安装install.packages("ggplot2", repos = "http://cran.r-project.org")
library(RColorBrewer)#首次用需要先安装install.packages('RColorBrewer')
#Group:为因子变量(分组)
#Value:为连续变量,是数值
#使用ggplot2包生成箱线图
#加载包
library(ggplot2)#事先安装install.packages('ggplot2')
library(RColorBrewer)#颜色版install.packages('RColorBrewer')
#Group:为因子变量(分组)
#Value:为连续变量,是数值
#使用ggplot2包生成箱线图
P1 <- ggplot(Data1,aes(x=Group,y=Value,fill=Group))+ #”fill=“设置填充颜色
stat_boxplot(geom = "errorbar",width=0.15,aes(color="black"))+ #使用误差条的方式补上
geom_boxplot(size=0.5,fill="white",outlier.fill="white",outlier.color="white")+ #size设置箱线图的边框线和误差条线宽度,fill设置填充颜色,outlier.fill和outlier.color设置异常点的属性
geom_jitter(aes(fill=Group),width =0.2,shape = 21,size=2.5)+ #设置为向水平方向抖动的散点图,width指定了向水平方向抖动,不改变纵轴的值
scale_fill_manual(values = c("#E69F00", "#0072B2"))+ #设置填充的颜色
scale_color_manual(values=c("black","black"))+ #设置散点图的圆圈的颜色为黑色,也可以设置为如以上values = c("#E69F00", "#0072B2")
ggtitle("Strain diversity for OTUs
with >3,000 reads")+ #设置总的标题
theme_bw()+ #背景变为白色
theme(legend.position="none", #不需要图例
axis.text.x=element_text(colour="black" ,size=14), #设置x轴刻度标签的字体属性
axis.text.y=element_text( size=14,face="plain"), #设置x轴刻度标签的字体属性
axis.title.y=element_text( size = 14,face="plain"), #设置y轴的标题的字体属性
axis.title.x=element_text( size = 14,face="plain"), #设置x轴的标题的字体属性
plot.title = element_text( size=15,face="bold",hjust = 0.5), #设置总标题的字体属性
panel.grid.major = element_blank(), #不显示网格线
panel.grid.minor = element_blank())+
ylab("Number of strains")+xlab(" ") #设置x轴和y轴的标题
P1
P1#查看最终的结果
jpeg(file = "C:/Users/Mr.R/Desktop/boxplot.jpg",width =1400,height = 1600,units = "px",res =300) #结果保存到制定位置
print(P1)
dev.off()#结束绘图
得到:
image.png
- 对Non-core进行p值的标注,则:
注:这里需要先进行one-sided Mann–Whitney U-tests (95% CI)检验,再把得到的p值标注上去,相关概念与计算方法可参考https://www.jianshu.com/p/8c0e7ce7a290
用annotate()函数进行标注:
P2<-P1+annotate("text",x="Non-core",y=34,label="P = 0.016")
P2
得到:
image.png
或者可以用geom_label()函数标注:
P2<-P1+geom_label(aes(x ="Non-core",y=34,label="P = 0.016"), fill = "green")
P2
得到:
image.png
对p值标注的字体调整:
P2<-P1+geom_label(aes(x ="Non-core",y=34,label="P = 0.016"), fill = "green",fontface = "italic")
P2
得到:
image.png