gpt4 book ai didi

r - 如何在 R(素食包)的 NMDS 图中绘制不同颜色的站点?

转载 作者:行者123 更新时间:2023-12-04 17:40:58 25 4
gpt4 key购买 nike

我有来自草地(站点 1-14)和采石场(站点 15-28)的数据,并希望它们在我使用素食包创建的 NMDS 图中具有不同的颜色,例如。 G。站点编号 1-14 为红色,站点编号为 15-28 为蓝色。

我是 R 的新手,不熟悉图形编辑。

vare.mds <- metaMDS(species, trace=FALSE)
plot(vare.mds, type = "n")
text(vare.mds, display = "sites")

最佳答案

假设样本按照您指定的顺序排列(第 1-14 行是草地,第 15-28 行是采石场)那么在基础图形中执行此操作的最简单方法是创建所需长度的因子变量:

grp <- factor(rep(c('grassland', 'quarry'), each = 14))

然后为两组创建一个颜色向量

cols <- c('red','black')

然后您可以使用 col 参数为 text() 调用创建的文本着色,这通常可用于大多数基本图形绘制函数。

要查看实际绘制时会发生什么,我们要做的是使用 grp 包含组成员资格的因素对颜色向量 cols 进行索引:

> cols[grp]
[1] "red" "red" "red" "red" "red" "red" "red" "red" "red"
[10] "red" "red" "red" "red" "red" "black" "black" "black" "black"
[19] "black" "black" "black" "black" "black" "black" "black" "black" "black"
[28] "black"

grp 存储为一个数值向量,其元素索引每个观察的级别:

> as.numeric(grp)
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2

因此,在 cols[grp] 中,grp 成为一个数值向量,根据您的每个站点的需要分别索引第一种或第二种颜色。

因此,text() 将如下所示:

text(vare.mds, display = "sites", col = cols[grp])

在你的情况下,简单地调用就足够了

text(vare.mds, display = "sites", col = rep(cols, each = 14))

因为这些组被安排在连续的样本 block 中,但如果不是这种情况(如果您忘记以相同的方式对相关数据集进行排序,则求助不一定是一件好事)那么我上面描述的方法是有益的.

为了制作一个可直接重现的示例,这里是为 vegan

提供的 varespec 数据集完成的全部工作
library('vegan')
data(varespec)

## varespec has on 24 observations so 1-12 will be grassland and 13-24 quarry
grp <- factor(rep(c('grassland', 'quarry'), each = 12))

## vector of colours
cols <- c('red', 'black')

set.seed(1)
ord <- metaMDS(varespec, trace=FALSE)
plot(ord, type = 'n')
text(ord, display = 'sites', col = cols[grp])
legend('bottomright', legend = tools::toTitleCase(levels(grp)),
fill = cols, bty = 'n')

产生

enter image description here

关于r - 如何在 R(素食包)的 NMDS 图中绘制不同颜色的站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com