如何提取ComplexHeatmap中指定聚类组的CpG位点行名称
提取ComplexHeatmap中目标聚类CpG子集的方法
步骤说明
ComplexHeatmap在绘制热图时会保留完整的聚类信息,直接从热图对象中提取即可定位你关注的CpG组:
1. 保存热图对象
绘制热图时将结果赋值给变量,不要直接输出:
library(ComplexHeatmap) # 假设top1000_m是你预处理后的前1000个M值矩阵(行=CpG,列=样本) ht <- Heatmap(top1000_m, cluster_rows = TRUE, # 确保行聚类开启(默认是TRUE) # 其他绘图参数(比如颜色、列注释等)保持你原来的设置 ) draw(ht)
2. 获取行聚类结果
从热图对象中提取行聚类的树状图,再切割得到分组:
# 提取行聚类树状图(单热图取[[1]],组合热图需对应调整索引) row_tree <- row_dend(ht)[[1]] # 切割树状图得到分组:k是你观察到的聚类总数,比如黑色框是第1组 row_groups <- cutree(row_tree, k = 3) # 假设总共有3个聚类组 # 或者根据树高切割(如果知道目标组对应的分支高度) # row_groups <- cutree(row_tree, h = 15) # 替换为实际树高值
3. 筛选目标CpG
提取你关注的聚类组对应的CpG名称及矩阵:
# 假设黑色框对应第1组 target_cpgs <- names(row_groups[row_groups == 1]) # 提取这些CpG的原始Beta值矩阵 target_beta_matrix <- your_full_beta_matrix[target_cpgs, ]
4. 验证(可选)
单独绘制目标CpG的热图确认:
Heatmap(target_beta_matrix, row_names_gp = gpar(fontsize = 8), # 放大行名方便查看 row_names_side = "left" )
额外提示
- 不确定k值时,先画树状图查看结构:
plot(row_tree),手动数聚类组数。 - 若使用
HeatmapList(多热图组合),需用row_dend(ht_list)[[2]]这样的方式指定对应热图的索引。
内容的提问来源于stack exchange,提问作者cewim
相关产品推荐
相关产品推荐

