作图

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

2022-01-28  本文已影响0人  KS科研分享与服务

热图系列已经完成很久了,近日看到一篇《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还有其他一些功能,感兴趣的可以自己去探索。

上一篇下一篇

猜你喜欢

热点阅读