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

如何在ggplot中绘制vegan::meandist()生成的树状图?

用ggplot整合Vegan::meandist()的树状图并自定义美学

要把meandist()生成的组间平均相异度树状图整合到ggplot生态中,最方便的方式是结合ggtree包(基于ggplot2开发的系统发育树绘图工具),它能完全控制绘图的颜色、字体、布局等美学元素。以下是针对Dune数据集的完整实现步骤:

步骤1:安装并加载所需包

如果尚未安装依赖包,先执行安装命令:

install.packages(c("vegan", "ggtree", "dplyr"))

加载包并调用内置数据集:

library(vegan)
library(ggtree)
library(dplyr)

# 加载vegan内置的Dune数据集(与用户代码中外部数据结果一致)
data(dune)
data(dune.env)

步骤2:计算组间平均相异度

先计算样本间的Bray-Curtis相异度,再用meandist()得到按Management分组后的组间平均相异度:

# 样本间相异度计算
dune_dist <- vegdist(dune, method = "bray", na.rm = TRUE)

# 按Management分组计算组间平均相异度
dissim <- meandist(dune_dist, grouping = dune.env$Management)

步骤3:构建聚类树并准备着色映射

meandist()返回的是组间相异度矩阵,需要先转换为层次聚类对象;同时提取每个Management组对应的Use因子(去重确保每组对应唯一标签):

# 对组间相异度做层次聚类(采用平均连锁法,匹配meandist默认逻辑)
hc <- hclust(dissim, method = "average")

# 构建Management与Use的映射关系
use_map <- dune.env %>%
  distinct(Management, Use) %>%
  mutate(label = Management)

步骤4:用ggtree绘制自定义美学的树状图

利用ggtree语法结合ggplot2的图层设置,实现按Use因子着色,并自由调整绘图细节:

# 绘制树状图并按Use因子着色
ggtree(hc) +
  # 添加末端标签(Management组名),绑定Use颜色映射
  geom_tiplab(aes(color = Use), size = 4, offset = 0.02) +
  # 自定义颜色(可按需调整)
  scale_color_manual(values = c("BF" = "#E69F00", "HF" = "#56B4E9", "NM" = "#009E73", "SF" = "#F0E442")) +
  # 添加相异度坐标轴
  theme_tree2() +
  # 设置图例与主题样式
  labs(color = "土地利用类型") +
  theme(legend.position = "right",
        legend.title = element_text(size = 10),
        legend.text = element_text(size = 8),
        axis.title.x = element_text(size = 10))

核心优势

  • ggtree直接兼容hclust对象,无缝对接ggplot2的所有美学修改能力
  • 通过aes(color = Use)实现按土地利用类型为组标签着色,精准匹配需求
  • 可通过scale_color_*、theme()等函数自由调整颜色、字体、图例位置、背景等所有细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:20:44