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

作者: 小明的数据分析笔记本 | 来源:发表于2023-02-18 21:44 被阅读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

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

    今天的推文我们复现一下论文中的figure2b 水平堆积柱形图并添加连线

    image.png

    示例数据如下

    image.png

    读取数据

    library(readxl)
    library(tidyverse)
    dat<-read_excel("data/20230207/figure2b.xlsx")  
    dat
    

    指定因子水平和配色

    x_levels<-c("Prolif","EC-art","EC-cap1","EC-cap2",
                "EC-lymph1","EC-lymph2","EC-ven","EC-venule","EC-ang")
    
    fill.colors<-c("#f09004","#e30528","#f5aaad","#ef7b64","#7ec7bd",
                   "#63b32f","#527dbf","#8eb1de","#de2080")
    

    堆积柱形图的代码

    width<-0.4
    
    dat %>% 
      pivot_longer(!group) %>% 
      mutate(name=factor(name,levels = c("Western","chow"))) %>% 
      mutate(group=factor(group,levels = rev(x_levels))) %>% 
      ggplot(aes(x=value,y=name))+
      geom_bar(aes(fill=group),
               stat="identity",
               position = "fill",
               width = width)+
      scale_fill_manual(values = rev(fill.colors)) -> p1
    
    p1
    
    image.png

    计算添加线段的位置坐标

    dat[match(x_levels,dat$group),] %>% 
      mutate(x1=cumsum(chow/sum(chow)),
             x2=cumsum(Western/sum(Western))) -> new.df
    

    在p1的基础上添加线段并整体美化

    p1+
      geom_segment(data=new.df,
                   aes(x=x1,xend=x2,y=2-width/2,yend=1+width/2),
                   lty="dashed",
                   color="gray",
                   size=1)+
      theme_classic()+
      scale_x_continuous(position = "top",
                         expand = expansion(mult=c(0,0)),
                         breaks = seq(0,1,by=0.1),
                         labels=c(0,"",20,"",40,"",60,"",80,"",100))+
      theme(axis.ticks.y = element_blank(),
            panel.grid.major.x = element_line(),
            axis.title = element_blank(),
            plot.title = element_text(hjust=0.5),
            axis.text.y = element_text(face="bold",size=25),
            legend.title = element_blank())+
      labs(title="Percentage of cells per cluster")
    
    image.png

    论文中的Figure2d也是同样的图,可以自己试试用上面的代码是否能够做出来

    这个整体的配色也挺好看的,可以作为自己论文配色的备选

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

    欢迎大家关注我的公众号

    小明的数据分析笔记本

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

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

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

    image.png

    点击三个点,会跳出界面

    image.png

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

    相关文章

      网友评论

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

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