热图注释问题已经困扰了很多人,特别是那个颜色注释,在这个教程里你只要制备好你的xlsx文件,就能轻松搞定,拒绝烦恼。
行注释分组文件:annotation_row.xlsx
列注释分组文件:annotation_col.xlsx
颜色分组文件:ann_colors.xlsx
样本基因丰度文件:rrr_matrix.xlsx(一般是列名为样本,名行名为基因名)
为了更好的看清每个样本的数据结构,我直接上图把!
ann_colors.xlsx
annotation_row.xlsx
annotation_col.xlsx
rrr_matrix.xlsx
话不多说,上R代码:
library(openxlsx) # Load the openxlsx package library(ComplexHeatmap) # 读取Excel文件,将第一列设置为行名 rrr<- read.xlsx("rrr_matrix.xlsx", colNames = TRUE, rowNames = TRUE) annotation_col=read.xlsx("annotation_col.xlsx", colNames = TRUE, rowNames = TRUE) annotation_row=read.xlsx("annotation_row.xlsx", colNames = TRUE, rowNames = TRUE) # 读取Excel文件 data <- read.xlsx("ann_colors.xlsx") # 初始化一个空的列表 ann_colors <- list() # 遍历Excel文件中的每一行数据 for (i in 1:nrow(data)) { category <- data$Category[i] key <- data$Key[i] value <- data$Value[i] # 检查category是否已经存在于列表中 if (!category %in% names(ann_colors)) { ann_colors[[category]] <- setNames(character(), character()) } # 将数据添加到正确的category下 ann_colors[[category]][key] <- value } # 查看重构的列表 print(ann_colors) #自己设定颜色 pheatmap(as.matrix(rrr),cluster_rows = T,cluster_cols = F, color=colorRampPalette(c("navy","white","firebrick3"))(100), show_colnames = T,border_color = NA,scale = "row",show_rownames =F, annotation_col = annotation_col, annotation_row = annotation_row, annotation_colors = ann_colors) ################行和列进行分裂 pheatmap(as.matrix(rrr),cluster_rows = T,cluster_cols = T, color=colorRampPalette(c("navy","white","firebrick3"))(100), show_colnames = T,border_color = NA,scale = "row",show_rownames =F, annotation_col = annotation_col, annotation_row = annotation_row, annotation_colors = ann_colors,cutree_row = 4, cutree_cols = 5)
结果图如下
按照聚类分裂一下:
学废了吗?
关注我,以后的内容更精彩哦。
另外如有错误欢迎指正!
b站号:羽球最强生信人
微信公众号:小秋的R语言笔记
闲鱼号/淘宝号:小秋家的小卖铺