1

我对 R 比较陌生,我正在努力了解如何在 R 中进行排序技术,这样我就不需要使用其他软件。我正在尝试用环境因素代替物种的 PCA。由于我的场地在质量上有所不同(在土地利用方面),我希望能够在最终的地块中显示这种差异(使用不同的颜色)。因此,我使用了带有 vegan 包的 la Gavin Simpson 方法。到目前为止,一切都很好。这也是我用于此的代码:

with(fish, status)
scl <- -1 ## scaling = -1
colvec <- c("red2", "mediumblue")
plot(pond.pca, type = "n", scaling = scl)
with(fish, points(pond.pca, display = "sites", col = colvec[status], scaling = scl, pch = 21, bg = colvec[status]))
head(with(fish, colvec[status]))
text(pond.pca, display = "species", scaling = scl, cex = 0.8, col = "darkcyan")
with(fish, legend("topright", legend = levels(status), bty = "n", col = colvec, pch = 21, pt.bg = colvec))

当我尝试在排序图中为我的环境变量放置箭头时,问题就出现了。如果我使用 biplot 和 ordiplot 等其他功能。我将无法为我的两种类型的网站保留不同的颜色,因此我不想使用这些。如果我在这里使用命令:

plot(envfit(pond.pca, PondEnv38, scaling=-1), add=TRUE, col="black")

我得到了很好的箭头,只有与我之前在代码中给出的环境变量(第 5 行)没有对齐(在某些情况下是完全相反的)。我试图更改缩放比例,但它们无法对齐。

有谁知道如何处理这个问题?

任何提示都会很有用。

4

1 回答 1

2

目前尚不清楚您做错了什么,因为您没有提供可重现的问题示例,而且我很难按照您对错误的描述进行操作。这是一个完整的示例供您遵循,它可以完成您似乎正在尝试做的事情。

data(varespec)
data(varechem)

ord <- rda(varespec)

set.seed(1)
(fit <- envfit(ord, varechem, perm = 999))

## make up a fake `status`
status <- factor(rep(c("Class1","Class2"), times = nrow(varespec) / 2))

> head(status)
[1] Class1 Class2 Class1 Class2 Class1 Class2

现在情节

layout(matrix(1:2, ncol = 2))
## auto version
plot(fit, add = FALSE)

## manual version with extra things
colvec <-  c("red","green")
scl <- -1
plot(ord, type = "n", scaling = scl)
points(ord, display = "sites", col = colvec[status], pch = (1:2)[status])
points(ord, display = "species", pch = "+")
plot(fit, add = TRUE, col = "black")
layout(1)

这使

在此处输入图像描述

如果您envfit直接绘制对象,所有箭头似乎都指向它们。

于 2013-10-21T02:00:11.000 回答