RStudio中用ordihull/orditop绘制NMDS图无法居中且被截断
故障根因
ordihull、orditorp均为vegan包的叠加型绘图函数,本身不具备自动初始化画布、匹配NMDS全样本坐标范围的能力,仅会在当前已有的绘图坐标系上渲染图层。你遇到的偏移、截断问题本质是未提前绘制NMDS基础底图就直接调用叠加函数,或是基础绘图的xlim/ylim范围设置过窄,和par边距参数没有关联,因此调整par设置无法解决问题。
修复方案
- 第一步优先绘制NMDS基础底图,初始化匹配全样本的坐标范围:
如果你使用metaMDS生成NMDS结果,示例代码如下:library(vegan) # 假设nmds_res为metaMDS输出的结果对象 # type="n"表示仅生成坐标系、暂不绘制样点,避免后续叠加图层重复 plot(nmds_res, type = "n", xlab = "NMDS1", ylab = "NMDS2") # 若仍存在范围偏差,可手动指定坐标范围覆盖所有样点得分 # nmds_scores <- scores(nmds_res) # plot(nmds_res, type = "n", xlim = range(nmds_scores[,1]), ylim = range(nmds_scores[,2]), xlab = "NMDS1", ylab = "NMDS2") - 第二步再叠加ordihull、orditorp图层
# 假设group为样本分组变量 ordihull(nmds_res, groups = group, col = 1:length(unique(group)), lwd = 1.5) orditorp(nmds_res, groups = group, col = 1:length(unique(group)), cex = 0.9) # 最后按需添加样点、图例等元素 points(nmds_res, pch = 16, col = group, cex = 1) legend("topright", legend = unique(group), col = 1:length(unique(group)), pch = 16) - 额外排查项:如果RStudio绘图面板仍显示异常,点击面板顶部的清除历史按钮清空缓存,或导出为pdf/png文件查看,导出的文件无异常则为RStudio本地面板渲染缓存问题,不影响实际绘图结果。
内容的提问来源于stack exchange,提问作者CuriousDude
相关产品推荐
相关产品推荐

