美文网首页作图
不好好做图的NSC系列(十):一个可以替代ggplot做热图的R

不好好做图的NSC系列(十):一个可以替代ggplot做热图的R

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

    热图系列已经完成很久了,近日看到一篇《Cell》文章:Liver Immune Profiling Reveals Pathogenesis and Therapeutics for Biliary Atresia,其中的热图做的还是比较好的,有经验的小伙伴一眼就可以看出是用ggplot做的。但是之前我们也提到过,ggplot有点复杂,那有没有简单的方法呢,我找到了一个大神写的R包ggheatmap,可以实现操作,较ggplot简单一点,分享给大家。

    图片

    首先安装R包并加载数据,数据是我瞎写的,所以可能聚类效果不好。

    
    devtools::install_github("XiaoLuo-boy/ggheatmap")
    library(ggheatmap)
    setwd("F:/生物信息学/ggheatmap热图")
    A <- read.csv("A1.csv",header = T,row.names = 1)
    A <- log2(A)
    

    接下来行列的注释和ggplot类似(热图5:ggplot2画热图及个性化修饰)。唯一不同的是ggpheatmap不能像heatmao一样设置行列名显示,需要手动添加。

    col_ann <- data.frame(group= c(rep("CTRL",44),rep("LIVER",36), rep("BB",11)))
    rownames(col_ann) <- colnames(A)
    
    groupcol <- c("#99CC99","#336699","#FF9999")
    names(groupcol) <- c("CTRL","LIVER","BB")
    col <- list(group=groupcol)
    
    text_columns <- sample(colnames(A),0)#不显示列名
    

    接着画图。

    
    p <- ggheatmap(A,color=colorRampPalette(c("#003366","#FFFFFF","#660033"))(60),
              cluster_rows = T,cluster_cols = F,scale = "none",
              annotation_cols = col_ann,
              annotation_color = col,
              legendName="Relative value",
              text_show_cols = text_columns)
    p
    
    图片

    然后和文章中一样,修饰即可。ggpheatmap提供了一个函数ggheatmap_plotlist,可以查看图的组成部分,然后对对应的部分通过theme主题分别修改。

    ggheatmap_plotlist(p)
    
    图片

    添加分割线和边框。

    
    library(dplyr)
    p1 <- p%>%ggheatmap_theme(1,theme =list(geom_vline(xintercept=c(11.5,55.5),size=.8)))
    p2 <- p1%>%ggheatmap_theme(2,theme =list(theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))))
    p3 <- p2%>%ggheatmap_theme(1,theme =list(theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))))                     
    p4 <- p3%>%ggheatmap_theme(1,theme =list(geom_hline(yintercept=12.5,size=.8)))        
    p4
    
    图片

    这样一幅热图就做好了,可以学学,还是比较简单,以后画线至少不需要用ppt了。当然了ggpheatmap还有其他一些功能,感兴趣的可以自己去探索。

    相关文章

      网友评论

        本文标题:不好好做图的NSC系列(十):一个可以替代ggplot做热图的R

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