R绘图笔记 | 箱形图的绘制
关于绘图图,前面介绍了一些:
这里介绍箱形图的绘制,这些图形在文章中是很常见的,也是必须要掌握的。比如下图中的E图(来自文献:DOI: 10.1002/jcp.30015 )

一.读入数据
如果你想获取该数据用于自己练习,下面是获取数据的地址:
https://docs.qq.com/sheet/DV0dxREV1YkJ0ZmVj
数据格式是这样的。

数据第A列是病人ID,B~E列是临床信息,其他列是病人的RNAseq数据。
你可以保存副本导出,然后自己读入。
library(ggplot2)library(RColorBrewer)library(SuppDists) #提供rJohnson()函数data <- read.csv("BioInfoNotesData1.csv",row.names = 1)假如我们需要绘制某基因在不同分期的表达情况。
f1.data <- data[,c(1,5)]colnames(f1.data) <- c("Stage","Value")summary(f1.data$Stage)summary(f1.data$Stage) N Stage I Stage II Stage III Stage IV 11 75 176 128 64先检查数据是否有缺失值,分期信息不知用N来表示,可以删除这些数据。
f1.data<-f1.data[f1.data$Stage!="N",]head(f1.data)BioinfoNotes>head(f1.data) Stage ValueTCGA-3L-AA1B-01 Stage I 7.04TCGA-4N-A93T-01 Stage III 7.23TCGA-4T-AA8H-01 Stage II 6.61TCGA-5M-AAT4-01 Stage IV 7.56TCGA-5M-AAT6-01 Stage IV 4.99TCGA-5M-AATE-01 Stage II 7.41二.绘图
1.带误差线的箱形图
绘制箱型图用geom_boxplot函数。
geom_boxplot(mapping = NULL, data = NULL, stat = "boxplot", position = "dodge2", ..., outlier.colour = NULL, outlier.color = NULL, outlier.fill = NULL, outlier.shape = 19, outlier.size = 1.5, outlier.stroke = 0.5, outlier.alpha = NULL, notch = FALSE, notchwidth = 0.5, varwidth = FALSE, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)notch参数:如果为假(默认),则制作标准盒图。如果为真,做一个缺口盒图。凹槽用来比较组;如果两个盒子的凹槽不重叠,说明中位数有显著差异。
notchwidth参数:如果指定notch参数为TRUE的话,指定切口宽度,默认0.5。
varwidth参数:如果为假(默认),则制作标准盒图。如果为真,那么方框的宽度将与组中观察值的平方根成正比。
ggplot(f1.data, aes(Stage, Value))+ geom_boxplot(aes(fill = Stage),notch = FALSE)+ scale_fill_manual(values=c(brewer.pal(8,"Set2")[c(3,6,7,8)]))+ theme_classic()+ ylab("The expression level")+ theme(panel.background=element_rect(fill="white",colour="black",size=0.25), axis.line=element_line(colour="black",size=0.25), axis.title=element_text(size=13,face="plain",color="black"), axis.text = element_text(size=12,face="plain",color="black"), legend.position="none" )
将notch改为TRUE。
ggplot(f1.data, aes(Stage, Value))+ geom_boxplot(aes(fill = Stage),notch = TRUE)+ scale_fill_manual(values=c(brewer.pal(8,"Set2")[c(3,6,7,8)]))+ theme_classic()+ ylab("The expression level")+ theme(panel.background=element_rect(fill="white",colour="black",size=0.25), axis.line=element_line(colour="black",size=0.25), axis.title=element_text(size=13,face="plain",color="black"), axis.text = element_text(size=12,face="plain",color="black"), legend.position="none" )
ggplot(f1.data, aes(Stage, Value))+ geom_boxplot(aes(fill = Stage),notch = TRUE,varwidth = T)+ scale_fill_manual(values=c(brewer.pal(8,"Set2")[c(3,6,7,8)]))+ theme_classic()+ ylab("The expression level")+ theme(panel.background=element_rect(fill="white",colour="black",size=0.25), axis.line=element_line(colour="black",size=0.25), axis.title=element_text(size=13,face="plain",color="black"), axis.text = element_text(size=12,face="plain",color="black"), legend.position="none" )
2.箱型与抖动散点组合图
有时候,数据量大,我们需要显示每一个数据点,可以很直观的看到数据的分布情况。在文章中这种图是很常见的。我们只需要在上面的箱形图中加入geom_jitter函数就可以啦。
ggplot(f1.data, aes(Stage, Value))+ geom_boxplot(aes(fill = Stage))+ geom_jitter(binaxis = "y", position = position_jitter(0.3),stackdir = "center",dotsize = 0.4)+ scale_fill_manual(values=c(brewer.pal(7,"Set3")[c(1,3,5,7)]))+ theme_classic()+ labs(x='Stage',y='The expression level',title='Gene name')+ #设置标题 theme(panel.background=element_rect(fill="white",colour="black",size=0.25), axis.line=element_line(colour="black",size=0.25), axis.title=element_text(size=13,face="plain",color="black"), axis.text = element_text(size=12,face="plain",color="black"), legend.position="none" )

参考资料:
R语言数据可视化之美,张杰/著
geom_boxplot函数帮助文档
赞 (0)
