You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:52:48