如何在R(纯素包装)的NMDS图中以不同颜色绘制站点?

时间:2019-02-05 11:10:09

标签: r plot vegan

我有草原(站点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 个答案:

答案 0 :(得分:0)

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

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

然后为两组创建颜色矢量

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

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

要查看实际执行绘图时将发生的情况,我们要做的是使用cols包含组成员资格的因子对颜色矢量grp进行索引:

> 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))

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

要举一个直接可复制的示例,这是纯素

提供的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