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

R语言pheatmap绘制热图如何添加行列分组颜色注释条

pheatmap 行/列侧边分组颜色注释实现方法

pheatmap 侧边分组注释通过annotation_row(行侧注释)、annotation_col(列侧注释)参数传入分组信息,搭配annotation_colors自定义分组配色即可实现目标效果,完整可运行代码如下:

# 加载依赖包
library(pheatmap)

# 构建示例数据集(与原有示例一致,添加随机种子保证结果可复现)
set.seed(123)
Data <- data.frame(replicate(6,sample(0:1,6,rep=TRUE)))
row.names(Data) <- c('Gene1','Gene2','Gene3','Gene4','Gene5','Gene6')
colnames(Data) <- c("Strain1", "Strain2", "Strain3", "Strain4", "Strain5", "Strain6")

# ----------------------
# 1. 构建行侧(基因)分组注释
# ----------------------
# 注释数据框行名必须和热图数据的行名完全一致
row_annotation <- data.frame(
  耐药基因家族 = c(
    "Gene1" = "Group2",
    "Gene2" = "Group3",
    "Gene3" = "Group1",
    "Gene4" = "Group3",
    "Gene5" = "Group2",
    "Gene6" = "Group1"
  )
)
rownames(row_annotation) <- rownames(Data) # 强制匹配行名避免错位

# ----------------------
# 2. 构建列侧(菌株)分组注释
# ----------------------
# 注释数据框行名必须和热图数据的列名完全一致
col_annotation <- data.frame(
  细菌属分类 = c(
    "Strain1" = "Band1",
    "Strain2" = "Band3",
    "Strain3" = "Band1",
    "Strain4" = "Band2",
    "Strain5" = "Band2",
    "Strain6" = "Band3"
  )
)
rownames(col_annotation) <- colnames(Data) # 强制匹配列名避免错位

# ----------------------
# 3. 自定义分组配色(可自行替换色值为需要的Color1-Color6)
# ----------------------
ann_colors <- list(
  耐药基因家族 = c(
    "Group1" = "#E64B35", # 对应要求的Color1
    "Group2" = "#4DBBD5", # 对应要求的Color2
    "Group3" = "#00A087"  # 对应要求的Color3
  ),
  细菌属分类 = c(
    "Band1" = "#3C5488", # 对应要求的Color4
    "Band2" = "#F39B7F", # 对应要求的Color5
    "Band3" = "#8491B4"  # 对应要求的Color6
  )
)

# ----------------------
# 4. 绘制带侧边注释的热图
# ----------------------
pheatmap(
  Data, 
  color = colorRampPalette(c("#FFE4B5","#708090"))(2),
  legend_breaks = c(1, 0),
  legend_labels = c("Presence", "Absence"),
  border_color = "black", 
  display_numbers = FALSE,
  number_color = "black", 
  fontsize_number = 8,
  # 传入分组注释和配色
  annotation_row = row_annotation,
  annotation_col = col_annotation,
  annotation_colors = ann_colors,
  # 可选参数:关闭聚类即可保持基因、菌株的自定义顺序,与参考效果一致
  cluster_rows = FALSE,
  cluster_cols = FALSE
  # 其他可选调整参数
  # annotation_legend = FALSE, # 取消注释可隐藏分组注释的图例
  # annotation_width = unit(1, "cm"), # 调整行侧注释条宽度
  # annotation_height = unit(1, "cm") # 调整列侧注释条高度
)

注意事项

  • 注释数据框的行名必须和热图输入数据的行名(行注释)、列名(列注释)完全匹配,否则会出现注释错位或报错
  • 配色列表的名称必须和注释数据框的列名完全对应,列表内的命名向量名称必须和分组名完全一致,否则配色会失效
  • 如果需要保留聚类结果,删除cluster_rows = FALSE, cluster_cols = FALSE两行参数即可,注释条会自动跟随聚类结果排序

内容的提问来源于stack exchange,提问作者Taha Ahmed BENABBOU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:21:21