如何修改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
相关产品推荐
相关产品推荐

