美文网首页
不好好做图的NSC系列(九):ggplot2重现Nature文章

不好好做图的NSC系列(九):ggplot2重现Nature文章

作者: KS科研分享与服务 | 来源:发表于2022-01-24 13:50 被阅读0次

    今天继续重现Nature文章图1g的折线图,有了之前的经验(不好好做图的NSC系列(八):ggplot2重现Nature文章多组柱状图+散点,这是一场硬仗),这次会相对简单。

    首先数据位置和之前一样,先读入数据,用最普通的方法绘制折线图。

    setwd("F:/生物信息学/NATURE折线图")
    A <- read.csv("折线图.csv",header = T)
    
    ggplot(A,aes(x = Day,y =values,
                 group=group,color=group)) +                            
      stat_summary(fun.y="mean",geom="point",size=3) +        
      stat_summary(fun.y="mean",geom="line") +  
      stat_summary(fun.data = "mean_se",geom = "errorbar",width=0.05)+
      scale_color_nejm()+
      theme_bw()+
      theme(panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),
            panel.background = element_blank(),
            legend.key=element_blank())
    
    图片

    这个图与文章中的差距还是很大,主要需要修改的地方有:左右分区并填充,和之前的方法一样。还有y轴添加一条与x轴平行的线。修改线条和坐标轴!

    ggplot(A,aes(x = Day,y =values,
                 group=group,color=group))+
      geom_rect(aes(xmin=21,xmax=60,ymin=(-Inf),ymax=Inf),
                fill='grey90',color='grey90')+
      geom_vline(xintercept =21,linetype=2,cex=1.2)+
      stat_summary(geom = 'line',fun='mean',cex=2)+
      stat_summary(fun.y="mean",geom="line",cex=2) +  
      stat_summary(fun.data = "mean_se",geom = "errorbar",width=1,cex=1)+
      stat_summary(geom = 'point',fun='mean',aes(fill=group),
                   size=5,pch=21,color='black')+
      theme_bw()+
      theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())+
      theme(panel.border = element_blank())+
      theme(axis.line = element_line(colour = "black",size = 1))+
      theme_classic(base_size = 15)+
      labs(title = "", y="Weight change(%)", x = "Day")+
      scale_x_continuous(limits = c(0,60),expand = c(0,0))+
      geom_hline(yintercept=0)
    
    图片

    最后修改颜色,变成与原文一致的颜色填充。添加显著性标记,这里使用一个简单粗暴的函数annotate(),在之前一节里提过:不好好作图的NCS系列(四):ggplot2绘制多彩火山图

    
    ggplot(A,aes(x = Day,y =values,
                 group=group,color=group))+
      geom_rect(aes(xmin=21,xmax=60,ymin=(-Inf),ymax=Inf),
                fill='grey90',color='grey90')+
      geom_vline(xintercept =21,linetype=2,cex=1.2)+
      stat_summary(geom = 'line',fun='mean',cex=2)+
      stat_summary(fun.y="mean",geom="line",cex=2) +  
      stat_summary(fun.data = "mean_se",geom = "errorbar",width=1,cex=1)+
      stat_summary(geom = 'point',fun='mean',aes(fill=group),
                   size=5,pch=21,color='black')+
      theme_bw()+
      theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())+
      theme(panel.border = element_blank())+
      theme(axis.line = element_line(colour = "black",size = 1))+
      theme_classic(base_size = 15)+
      labs(title = "", y="Weight change(%)", x = "Day")+
      scale_x_continuous(limits = c(0,60),expand = c(0,0))+
      geom_hline(yintercept=0)+
      scale_color_manual(values = c('#5494cc','#0d898a','#e18283','#f9cc52'))+
      scale_fill_manual(values = c('#5494cc','#0d898a','#e18283','#f9cc52'))+
      annotate(geom = 'segment',x=52,xend = 52,y=2,yend = 12,cex=1)+
      annotate(geom = 'text',label='****',x=54,y=7,size=8,angle=90)
    
    图片

    最后就是图片叠加了,我们使用之前的柱状图。使用ggplotGrob()函数,设置好位置即可叠加!

    
    top <- ggplotGrob(p1)
    p2+annotation_custom(top,xmin=0,xmax=30,ymin=12,ymax=30)
    
    图片

    这篇Nature整体图都是比较简单的,但是呈现方式很有新意,值得学习!你学会了吗?还不点赞!!!

    相关文章

      网友评论

          本文标题:不好好做图的NSC系列(九):ggplot2重现Nature文章

          本文链接:https://www.haomeiwen.com/subject/aeebhrtx.html