整理 NMDS 排序图
Decluttering NMDS ordination plot
我有来自采石场和石灰质草地的繁殖鸟类组合数据,我想将它们与作为向量的环境参数一起显示在 nmds 排序图中。我怎样才能整理物种标签?我正在使用素食套餐进行协调。
我已经使用 goeveg 包中的 ordiselect
函数减少了显示的物种数量。标签仍然重叠,但我不想进一步减少物种。
使用 orditkplot
功能,我似乎无法获得在美学方面看起来和我想要的一样好的结果。我在使用该功能时也未能仅显示物种的一个子集。
ord.nmds <- metaMDS(species, trace=FALSE)
sel <- ordiselect(species, ord.nmds, ablim = 0.5, method = "axes", freq = TRUE)
ef <- envfit(ord.nmds ~ cgr + L_wdl + str + Hab_Div, env_var, permu=999)
grp <- factor(rep(c("GRASS", "QUARRY"), each = 14))
cols <- c("gray70","gray30")
plot(ord.nmds, type="n", xlim = c(-1.1, 1.1), ylim = c(-0.9,0.9))
points(ord.nmds, display = "sites", pch = 15, col = rep(cols, each = 14), cex=1)
text(ord.nmds, display = "species", col="black", cex=0.55, select = sel)
plot(ef, p.max = 0.05, col ="black", cex = 0.8)
legend(x = 0.6, y = 1.05, legend = tools::toTitleCase(levels(grp)), fill = cols, bty = "n", cex = 0.8)
到目前为止,我的情节是这样的:
您是否尝试过使用素食主义者的 ordipointlabel()
?我通常会得到很好的结果。对于这种绘图,通过直接导出来预定义绘图图形的最终大小(例如使用 png()
或 svg()
函数)也是非常有帮助和值得推荐的。只需将绘图函数放在这样的代码中,运行 整个块:
svg("ordinationdiagram.svg", width = 8, height = 6)
plot(ord.nmds, type = "n", ...)
points(ord.nmds, ...)
ordipointlabel(ord.nmds, add = T, ...)
legend(...)
dev.off()
直到你 运行 dev.off()
所有图形操作都将放在 svg-graphic 中。
如果您以矢量格式(如 svg)导出,您可以随后在任何矢量图形编辑器(例如 Inkscape)中加载图形,以手动重新排列重叠名称(如果仍然出现)。
我有来自采石场和石灰质草地的繁殖鸟类组合数据,我想将它们与作为向量的环境参数一起显示在 nmds 排序图中。我怎样才能整理物种标签?我正在使用素食套餐进行协调。
我已经使用 goeveg 包中的 ordiselect
函数减少了显示的物种数量。标签仍然重叠,但我不想进一步减少物种。
使用 orditkplot
功能,我似乎无法获得在美学方面看起来和我想要的一样好的结果。我在使用该功能时也未能仅显示物种的一个子集。
ord.nmds <- metaMDS(species, trace=FALSE)
sel <- ordiselect(species, ord.nmds, ablim = 0.5, method = "axes", freq = TRUE)
ef <- envfit(ord.nmds ~ cgr + L_wdl + str + Hab_Div, env_var, permu=999)
grp <- factor(rep(c("GRASS", "QUARRY"), each = 14))
cols <- c("gray70","gray30")
plot(ord.nmds, type="n", xlim = c(-1.1, 1.1), ylim = c(-0.9,0.9))
points(ord.nmds, display = "sites", pch = 15, col = rep(cols, each = 14), cex=1)
text(ord.nmds, display = "species", col="black", cex=0.55, select = sel)
plot(ef, p.max = 0.05, col ="black", cex = 0.8)
legend(x = 0.6, y = 1.05, legend = tools::toTitleCase(levels(grp)), fill = cols, bty = "n", cex = 0.8)
到目前为止,我的情节是这样的:
您是否尝试过使用素食主义者的 ordipointlabel()
?我通常会得到很好的结果。对于这种绘图,通过直接导出来预定义绘图图形的最终大小(例如使用 png()
或 svg()
函数)也是非常有帮助和值得推荐的。只需将绘图函数放在这样的代码中,运行 整个块:
svg("ordinationdiagram.svg", width = 8, height = 6)
plot(ord.nmds, type = "n", ...)
points(ord.nmds, ...)
ordipointlabel(ord.nmds, add = T, ...)
legend(...)
dev.off()
直到你 运行 dev.off()
所有图形操作都将放在 svg-graphic 中。
如果您以矢量格式(如 svg)导出,您可以随后在任何矢量图形编辑器(例如 Inkscape)中加载图形,以手动重新排列重叠名称(如果仍然出现)。