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

如何修改ggdendro绘制的树状图的线宽与分支颜色?

修改ggdendro树状图分支的线宽与颜色(简单方案)

方案1:直接修改生成的ggplot对象图层参数

ggdendrogram生成的树状图分支是用geom_segment绘制的,直接修改对应图层的参数就能调整线宽和颜色,无需复杂操作:

library(ggplot2)
library(ggdendro)
iris <- datasets::iris
means <- aggregate(iris, by = list(iris$Species), FUN = mean)

d <- dist(means)
hc <- hclust(d, method = "average")

# 生成基础树状图
dd <- ggdendrogram(hc) + theme_minimal() +
  labs(x = "Species", 
       y = "Euclidean distance") +
  coord_flip() + 
  theme(panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank())

# 调整分支线宽和颜色
dd$layers[[1]]$aes_params$size <- 2  # 线宽设为2
dd$layers[[1]]$aes_params$colour <- "#2E86AB"  # 分支设为深蓝色

plot(dd)

方案2:手动构建ggplot图(更灵活)

如果需要更自由的自定义空间,先用dendro_data()把聚类树转成数据框,再用原生ggplot函数绘制,直接在geom_segment里指定参数:

library(ggplot2)
library(ggdendro)
iris <- datasets::iris
means <- aggregate(iris, by = list(iris$Species), FUN = mean)

d <- dist(means)
hc <- hclust(d, method = "average")

# 转换聚类树为可绘图的数据格式
dendro_data <- dendro_data(hc, type = "rectangle")
segments <- segment(dendro_data)
labels <- label(dendro_data)

# 手动绘制树状图
ggplot() +
  geom_segment(data = segments, 
               aes(x = x, y = y, xend = xend, yend = yend),
               size = 2,  # 线宽
               colour = "#2E86AB") +  # 分支颜色
  geom_text(data = labels, 
            aes(x = x, y = y, label = label),
            hjust = 1, vjust = 0.5) +
  theme_minimal() +
  labs(x = "Species", y = "Euclidean distance") +
  coord_flip() +
  theme(panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank())

两种方案都不需要复杂的tidyverse操作:方案1最快捷,适合修改已有的树状图;方案2更灵活,方便后续添加更多自定义元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:20:43