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

如何在ggplot中添加dbRDA分析的环境因子箭头?

在ggplot中展示dbRDA的环境因子箭头

核心思路

dbRDA(基于距离的冗余分析)中纳入模型的环境因子信息,直接存储在模型结果的biplot得分里,无需额外用envfit拟合,只需提取这些得分即可在ggplot中绘制箭头。


步骤1:提取环境因子箭头坐标

假设你用vegan包的capscale(或dbrda)完成了dbRDA分析,模型对象为my_dbrda:

# 加载vegan包
library(vegan)

# 示例dbRDA模型(替换成你的实际代码)
my_dbrda <- capscale(community_matrix ~ env_var1 + env_var2 + env_var3, 
                     data = env_data, distance = "bray")

# 提取环境因子的biplot得分(箭头端点坐标)
env_arrows <- as.data.frame(scores(my_dbrda, display = "bp"))
# 添加环境因子名称列
env_arrows$variable <- rownames(env_arrows)
  • display = "bp"指定提取biplot points,即环境因子箭头的端点坐标。

步骤2:提取样本点坐标(可选,用于绘制样本分布)

# 提取样本的排序得分
sample_scores <- as.data.frame(scores(my_dbrda, display = "sites"))
# 如果有分组变量,可添加到数据框(按需)
sample_scores$group <- your_group_data

步骤3:用ggplot绘制完整dbRDA图

library(ggplot2)

ggplot() +
  # 绘制样本点(按需调整颜色、形状等)
  geom_point(data = sample_scores, aes(x = MDS1, y = MDS2, color = group), size = 2) +
  # 绘制环境因子箭头:起点为原点(0,0),终点为提取的坐标
  geom_segment(data = env_arrows, aes(x = 0, xend = MDS1, y = 0, yend = MDS2),
               arrow = arrow(length = unit(0.2, "cm")), color = "darkred", linewidth = 1) +
  # 添加环境因子标签(偏移1.1倍避免与箭头重叠)
  geom_text(data = env_arrows, aes(x = MDS1 * 1.1, y = MDS2 * 1.1, label = variable),
            color = "darkred", fontface = "bold", size = 4) +
  # 设置坐标轴标签,显示解释率
  xlab(paste0("dbRDA1 (", round(my_dbrda$CCA$eig[1]/sum(my_dbrda$CCA$eig)*100, 1), "%)")) +
  ylab(paste0("dbRDA2 (", round(my_dbrda$CCA$eig[2]/sum(my_dbrda$CCA$eig)*100, 1), "%)")) +
  theme_bw() +
  theme(panel.grid = element_blank())
  • 注意:如果你的dbRDA轴名称是DB1/DB2而非MDS1/MDS2,直接替换即可,可通过colnames(sample_scores)查看轴名。

关键说明

  • 区别于envfit:envfit是将环境因子拟合到已有的排序结果(如NMDS),而dbRDA的环境因子是作为解释变量直接纳入模型的,因此直接从模型的scores中提取"bp"即可,无需额外拟合。
  • 如果是用dbrda函数构建的模型,提取方式完全一致,scores(dbrda_result, display = "bp")同样有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:54