ggplot作图问题:科学计数法和标题换行

真的是实践出真知啊,很多小细节问题,平时自己作图的时候也没有注意过,更没有思考过。最近小伙伴找作图,在小伙伴的仔细琢磨下,也是发现了平时没有注意的小问题,这里提示下,希望对你的学习有帮助。示例数据我们使用批量箱线图(复现《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)。好了。这所有内容了,解决了一些细节问题,在实际的使用中还是挺有用的。觉得有用的点个赞,分享一下呗!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值