美文网首页bioinformaticsresearchIMP research
跟着Nature Metabolism学作图:R语言ggplot

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

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

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

    今天的推文我们试着复现一下论文中的Figure2中的热图,figure2中有3个热图,按照复制程度排序是 figure2m figure2f 和figure2o

    image.png image.png image.png

    我们从最简单的开始,先复现figure2m

    论文中提供的数据如下

    image.png

    数据中有很多缺失值,看论文中的配色 我猜是把缺失值替换成0了,我不太确定这种处理方式是否可以

    我把数据单独复制到一个excel文件里

    image.png

    给第一列添加一个表头

    代码

    读取数据

    library(readxl)
    dat<-read_excel("data/20230207/figure2o.xlsx",na='NA')
    dat
    

    宽格式转换为长格式

    library(tidyverse)
    
    dat%>%
      mutate(gene_name=factor(gene_name,levels = gene_name))%>%
      pivot_longer(!gene_name)%>%
      mutate(name=str_replace(name,'_logFC',''),
             value=replace_na(value,0))%>%
      mutate(name=factor(name,levels = c("sc","vis","liver",
                                         "kidney","lung","heart","brain")))-> new.dat
    

    热图代码

    library(ggplot2)
    
    ggplot(data = new.dat,aes(x=gene_name,y=name))+
      geom_tile(aes(fill=value),
                color="black")+
      theme_bw()+
      theme(panel.border = element_blank(),
            panel.grid = element_blank(),
            axis.ticks = element_blank(),
            axis.title = element_blank(),
            axis.text.x = element_text(angle=90,face="italic"),
            axis.text.y = element_blank(),
            legend.position = "bottom")+
      scale_fill_gradient2(low="blue",mid="white",high = "red",
                           midpoint = 0,
                           breaks=c(-0.3,0,0.3),
                           name="log(FC)")+
      guides(fill=guide_colorbar(title.position = "top",
                                 title.hjust = 0.5,
                                 barwidth = 10))+
      coord_equal() -> p1
    
    p1
    
    image.png

    左侧的分组也用热图来实现,就是一个一列的热图

    new.dat %>% filter(gene_name == "Apoe") %>%
      ggplot(aes(x=gene_name,y=name))+
      geom_tile(aes(fill=name),color="black")+
      theme_bw()+
      theme(panel.border = element_blank(),
            panel.grid = element_blank(),
            axis.ticks = element_blank(),
            axis.text.x = element_blank(),
            axis.title = element_blank(),
            legend.position = "none",
            axis.text.y = element_text(size=15,face="bold"))+
      scale_x_discrete(expand=expansion(mult=c(0,0)))+
      coord_equal() -> p2
    p2
    
    image.png

    最后是拼图

    library(patchwork)
    
    p2 + p1
    
    image.png

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

    欢迎大家关注我的公众号

    小明的数据分析笔记本

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

    相关文章

      网友评论

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

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