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

如何用hclust和cutreeDynamic绘制带聚类颜色的树状图并定位Control2Case样本

解决带聚类颜色和特殊样本标记的树状图绘制问题

以下是基于你已有的hclust树状图、cutreeDynamic聚类结果,以及Control2Case样本标记的适配方案,用R的dendextend包实现(该包对树状图的定制化支持更友好):

步骤1:确认已有对象(替换为你的实际变量)

假设你已经生成了以下核心对象:

# 你的层次聚类结果
hc <- hclust(dist(your_dataset), method = "ward.D2") 
# 动态聚类的分组标签(每个样本对应一个聚类编号)
cluster_labels <- cutreeDynamic(hc, distM = as.matrix(dist(your_dataset)), method = "hybrid") 
# 标记Control2Case样本的逻辑向量(TRUE=目标样本,FALSE=其他)
is_c2c <- your_dataset$Control2Case 

步骤2:加载依赖包

library(dendextend)
library(dynamicTreeCut)

步骤3:定制并绘制树状图

# 将hclust对象转为dendrogram格式,方便后续定制
dend <- as.dendrogram(hc)

# 给树状图的分支按聚类分组上色
dend <- color_branches(dend, groupLabels = cluster_labels)

# 给Control2Case样本的标签设置特殊样式:红色字体+末尾星号
labels_colors(dend) <- ifelse(is_c2c, "red", "black")
dend <- set(dend, "labels", value = ifelse(is_c2c, paste0(labels(dend), "*"), labels(dend)))

# 调整绘图边距,预留右侧图例空间
par(mar = c(5, 4, 4, 8))

# 绘制最终树状图
plot(dend, 
     main = "聚类树状图(Control2Case样本标记为红色*)",
     cex = 0.8, # 调整标签字体大小
     horiz = FALSE) # 若想横向展示,改为TRUE

# 在右侧添加聚类分组图例
legend("topright", 
       inset = c(-0.2, 0), 
       legend = unique(cluster_labels), 
       fill = unique(get_branches_colors(dend)),
       title = "聚类分组", 
       bty = "n") # 去掉图例边框

步骤4:提取Control2Case样本的聚类归属

直接输出目标样本对应的聚类信息,方便快速查看:

c2c_cluster_details <- data.frame(
  样本名称 = labels(dend)[is_c2c],
  所属聚类 = cluster_labels[is_c2c]
)
print("Control2Case样本聚类归属:")
print(c2c_cluster_details)

关键说明

  • color_branches会根据cluster_labels自动给同一聚类的分支分配相同颜色,也可以用color_leaves给样本节点上色,按需选择。
  • 若你的Control2Case样本是分组变量(而非逻辑向量),只需把ifelse的判断条件改为对应取值即可,比如is_c2c == "Control2Case"。
  • 调整cex参数可以适配样本数量多少,避免标签重叠。

内容的提问来源于stack exchange,提问作者José Adrián Pardo Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:25:00