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

ggplot结合envfit绘制NMDS图箭头比例失调求助

用ggplot绘制NMDS图添加envfit时箭头比例失调的问题

我在用ggplot绘制NMDS图并添加envfit结果时,遇到箭头过小、比例失调的问题,和Stack Exchange上相关帖子的问题一致,但因声望不足无法评论。

查看此处图表

以下是我的代码:

df = read.csv("df.csv", header = TRUE)
com = df[,10:11]   # 第10和11列是NMDS得分
env = pc[,2:9]   # 第2到9列是环境变量
en = envfit(com, env, permutations = 9999, na.rm = TRUE)
en

en_coord_cont = as.data.frame(scores(en, "vectors")) * ordiArrowMul(en)
en_coord_cat = as.data.frame(scores(en, "factors")) * ordiArrowMul(en)

com$Cluster = pc$Cluster

gg = ggplot(data = com, aes(x = Axis1B, y = Axis2B)) + 
  geom_point(data = com, aes(colour = Cluster), size = 3, alpha = 0.5) + 
  scale_colour_manual(values = c("#CBCBCB", "#616161", "#000000"))  + 
  geom_segment(aes(x = 0, y = 0, xend = Axis1B, yend = Axis2B), 
               data = en_coord_cont, size =1, alpha = 0.5, colour = "grey30") + 
  geom_text(data = en_coord_cont, aes(x = Axis1B, y = Axis2B), colour = "grey30", fontface = "bold", label = row.names(en_coord_cont)) + 
  theme(panel.background = element_blank(), 
        panel.border = element_rect(fill = NA, colour = "grey30"), 
        axis.text = element_text(size = 12), 
        legend.key = element_blank(), 
        legend.title = element_text(size = 14, face = "bold", colour = "black"),
        legend.text = element_text(size = 9, colour = "black"))

gg

我可以通过在en_coord_cont = as.data.frame(scores(en, "vectors")) * ordiArrowMul(en)中额外乘以一个整数(比如*2)来拉长箭头,但我知道ordiArrowMul(en)本应计算出合适的箭头长度,不想随意用随机倍数调整。

我已经按照建议安装了ggvegan,但不清楚它的用法。想请教:是否应该使用autoplot()命令来处理?能不能把已经创建好的ggplot对象gg直接导入ggvegan中使用?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:52:52