ComplexHeatmap 实战
参数介绍里面很丰富,但具体细节可能需要多做几张图才能慢慢体会!
下载及练习使用的矩阵在下面代码:
代码语言:txt复制#下载可以通过GitHub和biocmanage两种,前者最新版本,后者稳定版本代码语言:txt复制library(devtools)代码语言:txt复制install_github("jokergoo/ComplexHeatmap")代码语言:txt复制sessionInfo()代码语言:txt复制library(ComplexHeatmap)代码语言:txt复制#这个矩阵是官方document提供的代码语言:txt复制set.seed(123)代码语言:txt复制nr1 = 4; nr2 = 8; nr3 = 6; nr = nr1 nr2 nr3代码语言:txt复制nc1 = 6; nc2 = 8; nc3 = 10; nc = nc1 nc2 nc3代码语言:txt复制mat = cbind(rbind(matrix(rnorm(nr1*nc1, mean = 1, sd = 0.5), nr = nr1),代码语言:txt复制 matrix(rnorm(nr2*nc1, mean = 0, sd = 0.5), nr = nr2),代码语言:txt复制 matrix(rnorm(nr3*nc1, mean = 0, sd = 0.5), nr = nr3)),代码语言:txt复制 rbind(matrix(rnorm(nr1*nc2, mean = 0, sd = 0.5), nr = nr1),代码语言:txt复制 matrix(rnorm(nr2*nc2, mean = 1, sd = 0.5), nr = nr2),代码语言:txt复制 matrix(rnorm(nr3*nc2, mean = 0, sd = 0.5), nr = nr3)),代码语言:txt复制 rbind(matrix(rnorm(nr1*nc3, mean = 0.5, sd = 0.5), nr = nr1),代码语言:txt复制 matrix(rnorm(nr2*nc3, mean = 0.5, sd = 0.5), nr = nr2),代码语言:txt复制 matrix(rnorm(nr3*nc3, mean = 1, sd = 0.5), nr = nr3))代码语言:txt复制)代码语言:txt复制mat = mat[sample(nr, nr), sample(nc, nc)] # random shuffle rows and columns代码语言:txt复制rownames(mat) = paste0("row", seq_len(nr))代码语言:txt复制colnames(mat) = paste0("column", seq_len(nc))第一部分 Heatmap函数
直接实战来认识参数
图一涉及到颜色,标题,分版块等
图一
代码展示
代码语言:txt复制Heatmap(mat,代码语言:txt复制 name = "mat",代码语言:txt复制 col=colorRamp2(c(-2,0,2),c('skyblue2','white','red3')), #颜色设置代码语言:txt复制 color_space = "RGB",代码语言:txt复制 border = T,代码语言:txt复制 cluster_columns = F,代码语言:txt复制 cluster_rows = F,代码语言:txt复制 row_order=NULL, 代码语言:txt复制 column_order=NULL,代码语言:txt复制 column_title_side = "bottom", #设置行名及列名具体格式代码语言:txt复制 column_title_gp = gpar(fontsize=13,fondface="bold"),代码语言:txt复制 row_title_gp = gpar(fontsize=13,fondface="bold"),代码语言:txt复制 row_split = factor(c(rep(c("gene A","gene B","gene C"),time= c(4,6,8))), #根据行列分版块代码语言:txt复制 levels = c("gene A","gene B","gene C")),代码语言:txt复制 column_split = factor(c(rep(c("low risk","high risk"),12)),代码语言:txt复制 levels =c("low risk","high risk"),代码语言:txt复制 labels = c("low risk","high risk")),代码语言:txt复制 show_column_names = F)第二部分 Annotation
注释主要用到 HeatmapAnnotation 这个参数,参数使用直接上图来体会
图二涉及到注释
图二
代码语言:txt复制#图二代码语言:txt复制Heatmap(matrix(rnorm(100), 10), 代码语言:txt复制 col = colorRamp2(c(-2,0,2),c("skyblue","white","red3")),代码语言:txt复制 show_row_names = F,代码语言:txt复制 row_split = rep(c("model 1","model 2","model3"),time=c(2,3,5)),代码语言:txt复制 row_title_gp = gpar(fontsize=14,fontface='bold'),代码语言:txt复制 top_annotation = HeatmapAnnotation(foo = anno_block(gp = gpar(fill = 2:4),代码语言:txt复制 labels = c("group1", "group2", "group3"), 代码语言:txt复制 labels_gp = gpar(col = "white", fontsize = 10))),代码语言:txt复制 cluster_rows = F,代码语言:txt复制 cluster_columns = F,代码语言:txt复制 column_split = rep(1:3,time=c(2,3,5)),代码语言:txt复制 show_column_names = F)·
简单认识参数之后,那就开始吧,实战一
实战一
中的一张简单的热图,热图中5中signature在不同分组 中的表达,注释文件时是
实战一
.
一个小时搞定
实战一
代码如下:
代码语言:txt复制mat <- matrix(rnorm(500),nrow = 5)代码语言:txt复制colnames(mat) <- paste0("sample",1:100)代码语言:txt复制rownames(mat) <- paste0("signature",c(1,16,3,2,13))代码语言:txt复制cli <- data.frame(Tobacoo=sample(c("No","Yes"),100,replace = T),代码语言:txt复制 Alchoal=sample(c("No","Yes"),100,replace = T),代码语言:txt复制 HPV16=c(sample(c("No","Yes"),30,replace = T),rep("No",20),rep("Yes",30),rep("No",20)),代码语言:txt复制 cluster=rep(c("A","B","C1","C2"),time=c(20,30,30,20)))代码语言:txt复制cli$Tobacoo <- factor(cli$Tobacoo)代码语言:txt复制Tobacoo <- c(pal_nejm()(8)[1],pal_nejm()(8)[2])代码语言:txt复制names(Tobacoo) <- c("Yes","No")代码语言:txt复制cli$Alchoal <- factor(cli$Alchoal)代码语言:txt复制Alchoal <- c(pal_nejm()(8)[1],pal_nejm()(8)[2])代码语言:txt复制names(Alchoal) <-c("Yes","No")代码语言:txt复制cli$HPV16 <- factor(cli$HPV16)代码语言:txt复制HPV16<- c(pal_nejm()(8)[1],pal_nejm()(8)[2])代码语言:txt复制names(HPV16)<- c("Yes","No")代码语言:txt复制cli$cluster <- factor(cli$cluster)代码语言:txt复制cluster <- c(pal_nejm()(8)[3],pal_nejm()(8)[4],pal_nejm()(8)[5],pal_nejm()(8)[6])代码语言:txt复制names(cluster) <- c("A","B","C1","C2")代码语言:txt复制library(ComplexHeatmap)代码语言:txt复制library(circlize)代码语言:txt复制library(ggsci)代码语言:txt复制Heatmap(mat,col = colorRamp2(c(-2,0,2),c("skyblue2","white","red2")),代码语言:txt复制 color_space = "RGB",代码语言:txt复制 column_split = factor(rep(c("A","B","C"),time=c(20,30,50))),代码语言:txt复制 cluster_columns = F,代码语言:txt复制 show_column_names = F,代码语言:txt复制 top_annotation = HeatmapAnnotation( Tobacoo=cli$Tobacoo,代码语言:txt复制 Alchoal=cli$Alchoal,代码语言:txt复制 HPV16=cli$HPV16,代码语言:txt复制 cluster=cli$cluster,代码语言:txt复制 annotation_legend_param=list(labels_gp = gpar(fontsize = 9),代码语言:txt复制 title_gp = gpar(fontsize = 9, fontface = "bold"),代码语言:txt复制 ncol=1),代码语言:txt复制 col = list(Tobacoo=Tobacoo,代码语言:txt复制 Alchoal=Alchoal,代码语言:txt复制 HPV16=HPV16,代码语言:txt复制 cluster=cluster),代码语言:txt复制 show_annotation_name = TRUE,代码语言:txt复制 annotation_name_side="right",代码语言:txt复制 annotation_name_gp = gpar(fontsize = 9, fontface = "bold")))


