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