R:站点的不同颜色的 PCA 图
R: PCA plot with different colors for Sites
我最近正在尝试分析我的数据并希望使图表更漂亮一些,但我在这方面失败了。
所以我有一个包含 144 个站点和 5 个环境变量的数据集。它基本上是关于岛屿周围的基质成分和鱼类丰度。在这个岛上,北侧和南侧之间的基质成分应该有所不同。现在我正在做一个 pca 并且使用双标图功能它工作得很好,但我想稍微改变一下情节。
我需要一个站点只是点而不是编号的站点,箭头指向不同的变量并且站点根据它们的位置(北侧或南侧)着色。所以我尝试了我能找到的一切。
大多数使用沙丘数据并建议如下内容的示例:
library(vegan)
library(biplot)
data(dune)
mod <- rda(dune, scale = TRUE)
biplot(mod, scaling = 3, type = c("text", "points"))
所以根据这个,我只需要说出文本和点,R 会标记变量并为网站做点。当我这样做时,我得到了错误:
Error in plot.default(x, type = "n", xlim = xlim, ylim = ylim, col = col[1L], :
formal argument "type" matched by multiple actual arguments
不知道如何解决这个问题。
所以我找到的下一个策略是像这样手动绘制一个图:
require("vegan")
data(dune, dune.env)
mod <- rda(dune, scale = TRUE)
scl <- 3 ## scaling == 3
colvec <- c("red2", "green4", "mediumblue")
plot(mod, type = "n", scaling = scl)
with(dune.env, points(mod, display = "sites", col = colvec[Use],
scaling = scl, pch = 21, bg = colvec[Use]))
text(mod,display="species", scaling = scl, cex = 0.8, col = "darkcyan")
with(dune.env, legend("bottomright", legend = levels(Use), bty = "n",
col = colvec, pch = 21, pt.bg = colvec))
到目前为止这也很好用,我得到了不同的颜色和点,但现在箭头不见了。所以我发现这应该很容易纠正,如果我只是把 "display="bp"
" 在文本行中。但这也不起作用。每次我把 "bp" R 说:
Error in match.arg(display) :
argument "display" is missing, with no default
所以我现在有点绝望。我查看了这里的所有答案,但我不明白为什么 display="bp"
和 type=c("text","points")
对我不起作用。
如果有人有想法,我将不胜感激。
https://www.dropbox.com/sh/y8xzq0bs6mus727/AADmasrXxUp6JTTHN5Gr9eufa?dl=0
这是我的保管箱文件夹的 link。它包含我的 R 脚本和 csv 文件。名为 environmentalvariables_Kon1 的还包含有关南北侧的数据。
所以是的...如果有人可以帮助我。那将是真棒。我真的不知道该怎么办了。
此致,
南希
您可以使用 arrows()
添加箭头。查看 vegan:::biplot.rda
的代码,了解它在原始函数中的工作原理。
根据你的情节,添加
g <- scores(mod, display = "species")
len <- 1
arrows(0, 0, len * g[, 1], len * g[, 2], length = 0.05, col = "darkcyan")
您可能需要调整 len 的值以使箭头更长
我最近正在尝试分析我的数据并希望使图表更漂亮一些,但我在这方面失败了。
所以我有一个包含 144 个站点和 5 个环境变量的数据集。它基本上是关于岛屿周围的基质成分和鱼类丰度。在这个岛上,北侧和南侧之间的基质成分应该有所不同。现在我正在做一个 pca 并且使用双标图功能它工作得很好,但我想稍微改变一下情节。
我需要一个站点只是点而不是编号的站点,箭头指向不同的变量并且站点根据它们的位置(北侧或南侧)着色。所以我尝试了我能找到的一切。
大多数使用沙丘数据并建议如下内容的示例:
library(vegan)
library(biplot)
data(dune)
mod <- rda(dune, scale = TRUE)
biplot(mod, scaling = 3, type = c("text", "points"))
所以根据这个,我只需要说出文本和点,R 会标记变量并为网站做点。当我这样做时,我得到了错误:
Error in plot.default(x, type = "n", xlim = xlim, ylim = ylim, col = col[1L], :
formal argument "type" matched by multiple actual arguments
不知道如何解决这个问题。
所以我找到的下一个策略是像这样手动绘制一个图:
require("vegan")
data(dune, dune.env)
mod <- rda(dune, scale = TRUE)
scl <- 3 ## scaling == 3
colvec <- c("red2", "green4", "mediumblue")
plot(mod, type = "n", scaling = scl)
with(dune.env, points(mod, display = "sites", col = colvec[Use],
scaling = scl, pch = 21, bg = colvec[Use]))
text(mod,display="species", scaling = scl, cex = 0.8, col = "darkcyan")
with(dune.env, legend("bottomright", legend = levels(Use), bty = "n",
col = colvec, pch = 21, pt.bg = colvec))
到目前为止这也很好用,我得到了不同的颜色和点,但现在箭头不见了。所以我发现这应该很容易纠正,如果我只是把 "display="bp"
" 在文本行中。但这也不起作用。每次我把 "bp" R 说:
Error in match.arg(display) :
argument "display" is missing, with no default
所以我现在有点绝望。我查看了这里的所有答案,但我不明白为什么 display="bp"
和 type=c("text","points")
对我不起作用。
如果有人有想法,我将不胜感激。 https://www.dropbox.com/sh/y8xzq0bs6mus727/AADmasrXxUp6JTTHN5Gr9eufa?dl=0 这是我的保管箱文件夹的 link。它包含我的 R 脚本和 csv 文件。名为 environmentalvariables_Kon1 的还包含有关南北侧的数据。
所以是的...如果有人可以帮助我。那将是真棒。我真的不知道该怎么办了。
此致, 南希
您可以使用 arrows()
添加箭头。查看 vegan:::biplot.rda
的代码,了解它在原始函数中的工作原理。
根据你的情节,添加
g <- scores(mod, display = "species")
len <- 1
arrows(0, 0, len * g[, 1], len * g[, 2], length = 0.05, col = "darkcyan")
您可能需要调整 len 的值以使箭头更长