美文网首页ggplot2绘图基因组数据绘图R可视化
跟着Nature Metabolism学作图:R语言ggplot

跟着Nature Metabolism学作图:R语言ggplot

作者: 小明的数据分析笔记本 | 来源:发表于2023-02-25 22:09 被阅读0次

    论文

    Single-cell profiling of vascular endothelial cells reveals progressive organ-specific vulnerabilities during obesity

    https://www.nature.com/articles/s42255-022-00674-x#Sec58

    s42255-022-00674-x.pdf

    https://github.com/Osynchronika/sc_EC_obesity_atlas

    大部分 作图的数据都有,可以试着用论文中提供的数据复现一下论文中的图

    今天的推文我们复现一下论文中的figure4f

    image.png

    之前的推文也介绍过这种形式的饼图,可以也看看之前的推文

    今天的这个图上下两层分开做,然后采用拼图的方式实现

    饼图上展示比例的文本如何添加的精确的位置我暂时想不到比较好的方法了,推文里的解决办法是构造大体的坐标,然后出图后手动调节

    论文中提供的数据

    image.png

    第一层饼图的数据整理成如下格式

    image.png

    作图代码

    library(ggplot2)
    library(scatterpie)
    library(readxl)
    library(tidyverse)
    
    fig4f.df01<-read_excel("data/20230207/figure4f.xlsx",
                           sheet = "Sheet1")
    fig4f.df01
    
    ggplot()+
      geom_scatterpie(data=fig4f.df01,
                      aes(x,y,group=region,r=0.4),
                      cols = c("A","B"))+
      coord_equal()
    
    
    fig4f.df01
    fig4f.df01 %>% 
      rowwise() %>% 
      mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"),
             B_prop=paste0(round(B/(A+B),2)*100,"%"),
             x_A=x+0.1,
             x_B=x-0.1,
             y_A=y,y_B=y) -> fig4f.df01.1
      ggplot()+
      geom_scatterpie(data=fig4f.df01.1,
                      aes(x,y,group=region,r=0.4),
                      cols = c("A","B"))+
      coord_equal()+
      geom_text(data=fig4f.df01.1,
                aes(x=x_A,y=y_A,label=A_prop),
                hjust=0,color="black")+
        geom_text(data=fig4f.df01.1,
                  aes(x=x_B,y=y_B,label=B_prop),
                  hjust=1,color="white")+
        theme_void()+
        theme(axis.title.y = element_text(angle = 90),
              legend.title = element_blank())+
        scale_fill_manual(values = c("A"="#89bd41","B"="#e20613"),
                          labels=c("A"="Obesity: up\nRev: restored",
                                   "B"="Obesity: up\nRev: not restored"))+
        labs(y="Upregulated")+
        geom_text(data = data.frame(x=1:7,y=1.5,label=c("Brain","Heart","Lungs",
                                                        "Kidneys","Liver","Vis AT","Sc AT")),
                  aes(x=x,y=y,label=label),
                  fontface="bold")
    
    image.png

    第二层的思路是一样的

    作图数据手动整理成如下格式

    image.png

    作图代码

    fig4f.df02<-read_excel("data/20230207/figure4f.xlsx",
                             sheet = "Sheet2")
    fig4f.df02
    
      
    fig4f.df02
    fig4f.df02 %>% 
        rowwise() %>% 
        mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"),
               B_prop=paste0(round(B/(A+B),2)*100,"%"),
               x_A=x+0.1,
               x_B=x-0.1,
               y_A=y,y_B=y) -> fig4f.df02.1
    ggplot()+
        geom_scatterpie(data=fig4f.df02.1,
                        aes(x,y,group=region,r=0.4),
                        cols = c("A","B"))+
        coord_equal()+
        geom_text(data=fig4f.df02.1,
                  aes(x=x_A,y=y_A,label=A_prop),
                  hjust=0,color="white")+
        geom_text(data=fig4f.df02.1,
                  aes(x=x_B,y=y_B,label=B_prop),
                  hjust=1,color="black")+
        theme_void()+
        theme(axis.title.y = element_text(angle = 90),
              legend.title = element_blank())+
        scale_fill_manual(values = c("A"="#312782","B"="#8abe42"),
                          labels=c("A"="Obesity: down\nRev: restored",
                                   "B"="Obesity: down\nRev: not restored"))+
        labs(y="Downregulated")
    
    image.png

    最后是拼图

    library(patchwork)
    
    p1/p2
    

    出图后再手动编辑文本的位置

    image.png

    示例数据和代码可以给推文点赞,然后点击在看,最后留言获取

    欢迎大家关注我的公众号

    小明的数据分析笔记本

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

    微信公众号好像又有改动,如果没有将这个公众号设为星标的话,会经常错过公众号的推文,个人建议将 小明的数据分析笔记本 公众号添加星标,添加方法是

    点开公众号的页面,右上角有三个点

    image.png

    点击三个点,会跳出界面

    image.png

    直接点击 设为星标 就可以了

    image.png

    相关文章

      网友评论

        本文标题:跟着Nature Metabolism学作图:R语言ggplot

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