如何在R语言中结合聚类信息绘制热图?
用pheatmap绘制含样本聚类信息的基因热图
你的数据是长格式(每行对应一个基因-样本对),而pheatmap需要宽格式矩阵作为输入,同时可以通过annotation_col参数添加样本聚类注释。以下是完整的实现步骤:
1. 加载所需包
library(pheatmap) library(tidyr) library(dplyr)
2. 构造/导入数据
先把你的数据转换成R的data.frame格式:
df <- data.frame( Genes = c("ARID1A", "FAT1", "KMT2C", "KMT2C", "ATM", "KMT2D"), Sample = c("TCGA-2", "TCGA-2", "TCGA-1", "TCGA-3", "TCGA-3", "TCGA-4"), cluster = c("cluster 1", "cluster 1", "cluster 2", "cluster 3", "cluster 2", "cluster 2") )
3. 转换为热图所需的宽格式矩阵
这里假设你的数据是基因在样本中的存在标记(1表示存在,0表示不存在),如果是表达量数据,直接替换value为对应数值即可:
heatmap_data <- df %>% mutate(value = 1) %>% pivot_wider(names_from = Sample, values_from = value, values_fill = 0) %>% column_to_rownames("Genes")
4. 准备样本聚类注释信息
确保注释的样本顺序和热图矩阵的列顺序一致:
sample_annot <- df %>% select(Sample, cluster) %>% distinct() %>% column_to_rownames("Sample") %>% .[colnames(heatmap_data), ]
5. 绘制带聚类注释的热图
pheatmap( heatmap_data, annotation_col = sample_annot, # 添加样本聚类的顶部注释条 show_rownames = TRUE, # 显示基因名称 show_colnames = TRUE, # 显示样本名称 cluster_cols = FALSE, # 关闭样本聚类,保持原始顺序;如需聚类可设为TRUE cluster_rows = TRUE, # 开启基因聚类 main = "基因存在情况热图(含样本聚类)" )
可选:按聚类分组排序样本
如果想让同聚类的样本放在一起,先排序再绘制:
# 按聚类排序样本 sorted_samples <- sample_annot %>% arrange(cluster) %>% rownames() # 调整矩阵和注释的顺序 heatmap_data_sorted <- heatmap_data[, sorted_samples] sample_annot_sorted <- sample_annot[sorted_samples, ] # 重新绘制热图 pheatmap( heatmap_data_sorted, annotation_col = sample_annot_sorted, show_rownames = TRUE, show_colnames = TRUE, cluster_cols = FALSE, cluster_rows = TRUE, main = "按样本聚类分组的基因热图" )
内容的提问来源于stack exchange,提问作者Aryh
相关产品推荐
相关产品推荐

