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

如何基于标签前缀为R语言树状图(Dendogram)的标签和分支上色?

基于标签前缀为R树状图的标签和分支上色

完整实现代码

先整理示例数据并完成上色逻辑:

# 加载所需包
library(dendextend)

# 准备示例数据(修正重复列名)
Correlation_Test <- data.frame(
  "A Data 1" = c(0.1666667, 0.6666667, 0.5),
  "A Data 2" = c(0.5, 0.6666667, 0.5),
  "B Data 1" = c(0.6666667, 0.6666667, 0.6666667)
)

# 计算距离与聚类(变量聚类需转置数据,样本聚类可跳过转置)
d <- dist(t(Correlation_Test))
hc <- hclust(d, "ave")
dend <- as.dendrogram(hc)  # 转为dendextend可处理的树状图对象

# 根据标签前缀生成颜色向量
labels <- labels(dend)
label_colors <- ifelse(grepl("^A", labels), "red", "blue")  # A前缀标红,B前缀标蓝

# 为标签上色
dend <- dend %>% 
  set("labels_colors", label_colors)

# 为分支上色(匹配对应标签的颜色)
cluster_groups <- ifelse(grepl("^A", labels), 1, 2)
dend <- dend %>% 
  set("branches_k_color", k = 2, col = c("red", "blue"), groupLabels = cluster_groups)

# 绘制树状图
plot(dend, main = "按标签前缀上色的树状图")

关键步骤说明

  • 数据转置:示例数据是行样本、列变量,若要对变量聚类需转置数据;如果你的原始数据已经以变量为行,可跳过这一步。
  • 标签颜色匹配:用grepl("^A", labels)匹配以"A"开头的标签,通过ifelse生成对应颜色向量,再用set("labels_colors")完成赋值。
  • 分支上色:通过标签前缀预先定义分组,再用set("branches_k_color")根据分组为分支上色,确保分支颜色与对应标签一致。

扩展说明

如果有更多前缀类别(如C、D),只需扩展颜色匹配逻辑即可,示例如下:

library(dplyr)
label_colors <- case_when(
  grepl("^A", labels) ~ "red",
  grepl("^B", labels) ~ "blue",
  grepl("^C", labels) ~ "green",
  TRUE ~ "black"
)

内容的提问来源于stack exchange,提问作者Gregor O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:50:18