我们在画热图的时候,很大程度上是为了比较不同组之间是否存在基因表达的差异或者物种丰度的差异。那么分组热图可能是你的最好选择,也就是从图1到图2的过程。
图1 正常聚类热图 (左) 图2分组聚类热图
怎么绘制呢,很简单,我们先准备一下两个文件, rrr_matrix.xlsx(不同样本基因表达量表)和group.xlsx(样本分组表)
不同样本的基因表达量的表 rrr_matrix.xlsx
分组表group.xlsx
下面就是直接上R代码了
library(readxl) Group <- as.data.frame(read_excel("group.xlsx")) rownames(Group) <- Group[[1]] Group <- Group[-1] rrr <- as.data.frame(read_excel("rrr_matrix.xlsx")) rownames(rrr) <- rrr[[1]] rrr <- rrr[-1] #BiocManager::install("ComplexHeatmap") library(ComplexHeatmap) library(circlize) col_fun = colorRamp2(c(-2, 0, 2), c("#2fa1dd", "white", "#f87669")) top_annotation = HeatmapAnnotation( cluster = anno_block(gp = gpar(fill = c("#2fa1dd", "#f87669")), labels = c("control","treat"), labels_gp = gpar(col = "white", fontsize = 12))) # 重新排序Group,基于因子水平的顺序 Group <- Group[order(factor(Group[,1], levels = c("treat", "control"))),] # 现在Group的顺序应该是先treat后control # 使用更新后的Group进行绘图 m = Heatmap(as.matrix(rrr), name = " ", col = col_fun, top_annotation = top_annotation, column_split = Group, show_heatmap_legend = FALSE, border = FALSE, show_column_names = FALSE, show_row_names = FALSE, column_title = NULL) m
解决战斗!
关注我,以后的内容更精彩哦。
另外如有错误欢迎指正!
b站号:羽球最强生信人
微信公众号:小秋的R语言笔记
闲鱼号/淘宝号:小秋家的小卖铺