真的是实践出真知啊,很多小细节问题,平时自己作图的时候也没有注意过,更没有思考过。最近小伙伴找作图,在小伙伴的仔细琢磨下,也是发现了平时没有注意的小问题,这里提示下,希望对你的学习有帮助。示例数据我们使用批量箱线图(复现《nature communications》图表(二):一劳永逸,R语言一键画表达量箱线图并添加显著性),数据代码在我们的QQ群文件,这里不再说明。首先还是按照之前的帖子我们作图:
library(RColorBrewer)
library(ggpubr)
library(ggplot2)
library(cowplot)
setwd("D:/KS项目/公众号文章/ggplot标题换行科学计数法")
Exp <- read.csv("Exp.csv",header=T,row.names=1)
info <- read.csv("info.csv",header=T)
Exp_plot <- Exp[info$Sample,]
Exp_plot$group=info$Type
Exp_plot$group <- factor(Exp_plot$group,levels=c("Asymptomatic","Mild","Severe","Critical"))
plist<-list()
col <-c("#5CB85C","#337AB7","#F0AD4E","#D9534F")
for (i in 1:ncol(Exp)){
data <- Exp_plot[,c(colnames(Exp)[i],"group")]#循环提取每个基因表达信息
colnames(data)<-c("Expression","group")#统一命名
my_comparisons1 <- list(c("Asymptomatic", "Mild")) #设置比较组
my_comparisons2 <- list(c("Asymptomatic", "Severe"))#设置比较组
my_comparisons3 <- list(c("Asymptomatic", "Critical"))#设置比较组
my_comparisons4 <- list(c("Mild", "Severe"))#设置比较组
my_comparisons5 <- list(c("Mild", "Critical"))#设置比较组
my_comparisons6 <- list(c("Severe", "Critical"))#设置比较组
p <- ggboxplot(data,#ggboxplot画箱线图
x="group",#x轴为组别
y="Expression",#y轴为表达量
color="group",#用样本分组填充
fill=NULL,
add = "jitter",#添加散点
bxp.errorbar.width = 0.6,
width = 0.4,
size=0.01,
font.label = list(size=30),
palette = col)+
theme(panel.background =element_blank(),
axis.line=element_line(colour="black"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_text(size = 10,colour = 'black', angle = 45, hjust = 1),
axis.text.y = element_text(size = 10,colour = 'black'),
legend.position ='none',
plot.title = element_text(hjust = 0.5,size=12,face="bold"))+
ggtitle(colnames(Exp)[i])+
stat_compare_means(method="t.test",hide.ns = F,
comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6),
label="p.signif")
plist[[i]]<-p
}
#cowplot函数
p1 <-plot_grid(plist[[1]],plist[[2]],plist[[3]],
plist[[4]],plist[[5]],plist[[6]],ncol=3)
p1
这个图乍一看没啥问题,但有三个改进地方:
- 标题问题,有的标题太长,需要换行,换行一般使用\n字符,但是循环中有多个标题的时候无法使用。
- 显著性标记都突出坐标轴了,x轴文字也突出,有些看不见了。
- y轴数字科学计数法设置。
接下来我们一次性解决这几个问题:
plist2<-list()
col <-c("#5CB85C","#337AB7","#F0AD4E","#D9534F")
for (i in 1:ncol(Exp)){
data <- Exp_plot[,c(colnames(Exp)[i],"group")]#循环提取每个基因表达信息
colnames(data)<-c("Expression","group")#统一命名
my_comparisons1 <- list(c("Asymptomatic", "Mild")) #设置比较组
my_comparisons2 <- list(c("Asymptomatic", "Severe"))#设置比较组
my_comparisons3 <- list(c("Asymptomatic", "Critical"))#设置比较组
my_comparisons4 <- list(c("Mild", "Severe"))#设置比较组
my_comparisons5 <- list(c("Mild", "Critical"))#设置比较组
my_comparisons6 <- list(c("Severe", "Critical"))#设置比较组
p <- ggboxplot(data,#ggboxplot画箱线图
x="group",#x轴为组别
y="Expression",#y轴为表达量
color="group",#用样本分组填充
fill=NULL,
add = "jitter",#添加散点
bxp.errorbar.width = 0.6,
width = 0.4,
size=0.01,
font.label = list(size=30),
palette = col)+
theme(panel.background =element_blank(),
axis.line=element_line(colour="black"),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_text(size = 10,colour = 'black', angle = 45, hjust = 1),
axis.text.y = element_text(size = 10,colour = 'black'),
legend.position ='none',
plot.title = element_text(hjust = 0.5,size=10,face="bold"),
plot.margin=unit(c(0.5, 0.5, 0.5, 0.5),'cm'))+
ggtitle(str_wrap(colnames(Exp)[i],15))+
stat_compare_means(method="t.test",hide.ns = F,
comparisons =c(my_comparisons1,my_comparisons2,my_comparisons3,my_comparisons4,my_comparisons5,my_comparisons6),
label="p.signif")+
scale_y_continuous(expand = expansion(mult = c(0.05, 0.1)),
labels = scales::scientific)
plist2[[i]]<-p #将画好的图储存于plist2列表,并不断赋值循环直到结束
}
#cowplot函数
p2 <-plot_grid(plist2[[1]],plist2[[2]],plist2[[3]],
plist2[[4]],plist2[[5]],plist2[[6]],ncol=3)
p2
有时候,会自动进行科学计数法的坐标轴,如果强制所有都不需要,只需要一句代码:options(scipen=200)。好了。这所有内容了,解决了一些细节问题,在实际的使用中还是挺有用的。觉得有用的点个赞,分享一下呗!
网友评论