美文网首页ggplot2绘图researchIMP research
跟着Nature Communications学作图:R语言gg

跟着Nature Communications学作图:R语言gg

作者: 小明的数据分析笔记本 | 来源:发表于2022-08-06 06:48 被阅读0次

    论文

    Pan-African genome demonstrates how population-specific genome graphs improve high-throughput sequencing data analysis

    https://www.nature.com/articles/s41467-022-31724-3

    本地pdf s41467-022-31724-3.pdf

    论文中公布了大部分图的数据,但是没有公布对应的作图代码,没有关系,我们可以自己写代码试着模仿,今天的推文重复一下论文中的Figure 2D 的下半部分

    image.png

    首先是右侧的气泡图

    部分示例数据截图

    image.png

    读取数据并作图代码

    library(readxl)
    dat01<-read_excel("data/20220806/fig2d.xlsx",
                      sheet = "Sheet1")
    
    library(tidyverse)
    library(stringr)
    
    
    dat01 %>% 
      pivot_longer(-var) %>% 
      mutate(value=replace_na(value,"B")) -> new.dat01
    
    library(ggplot2)
    
    ggplot(data=new.dat01,aes(x=name,y=var))+
      geom_point(size=15,aes(color=value),
                 show.legend = FALSE)+
      geom_segment(data=data.frame(x=7:11,
                                   xend=7:11,
                                   y=6,
                                   yend=5:1),
                   aes(x=x,y=y,xend=xend,yend=yend),
                   color="#68c3a6",size=3)+
      scale_color_manual(values = c("A"="#68c3a6",
                                    "B"="#d3d3d3"))+
      geom_rect(data = data.frame(xmin=0.5,
                                  xmax=11.5,
                                  ymin=c(0.5,2.5,4.5),
                                  ymax=c(1.5,3.5,5.5)),
                aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax),
                fill="#f6f6f6",
                alpha=0.5,
                inherit.aes = FALSE)+
      geom_point(data=new.dat01,aes(x=name,y=var,color=value),
                 size=15,
                 show.legend = FALSE)+
      geom_segment(data=data.frame(x=7:11,
                                   xend=7:11,
                                   y=6,
                                   yend=5:1),
                   aes(x=x,y=y,xend=xend,yend=yend),
                   color="#68c3a6",size=3)+
      theme_void() -> p1
    
    p1
    
    image.png

    这里遇到了一个问题是 想把条状的灰色背景放到最底层,正常是把作图函数写到最前面就可以了,但是因为添加条状背景是连续数据,气泡图是离散数据,写到前面会报错,写到后面就没有这个问题,暂时不知道什么原因。这里的解决办法是有叠加了一层气泡图和线段的函数

    水平柱形图的代码

    部分示例数据集截图

    image.png
    dat02<-read_excel("data/20220806/fig2d.xlsx",
                      sheet = "Sheet2")
    dat02
    ggplot(data=dat02,aes(x=var,y=value))+
      geom_hline(yintercept = 10,lty="dashed",
                 color="#d3d3d3")+
      geom_col(fill="#68c3a6")+
      geom_text(aes(label=paste0(value,"M")),hjust=1)+
      coord_flip()+
      scale_y_reverse(expand=expansion(mult = c(0.4,0)),
                      breaks=c(0,10),
                      labels=c(0,"10M"))+
      scale_x_discrete(position = "top")+
      theme_classic()+
      theme(axis.line.y = element_blank(),
            axis.ticks.y = element_blank())+
      labs(x=NULL,y="Total size") -> p2
    
    p2
    
    image.png

    最后是拼图代码

    library(patchwork)
    p2 + p1 +
      plot_layout(widths = c(1,3))
    
    image.png

    背景的浅色灰色条不知道如何跨越两个图,这里是出图后编辑图片实现的

    示例数据和代码可以 给公众号推文打赏一元获取

    欢迎大家关注我的公众号

    小明的数据分析笔记本

    小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

    相关文章

      网友评论

        本文标题:跟着Nature Communications学作图:R语言gg

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