[英]NMDS plot in R: how to plot species in different colours and sites in different shapes?
[英]How to plot sites in different colours in a NMDS plot in R (vegan package)?
我有來自草原(站點 1-14)和采石場(站點 15-28)站點的數據,並希望它們在我使用素食包創建的 NMDS 圖中具有不同的顏色,例如站點編號 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()
調用創建的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))
因為這些組被安排在連續的樣本塊中,但如果不是這種情況(如果您忘記以相同的方式對關聯的數據集進行排序,那么重新排序不一定是一件好事),那么我上面描述的方法是有益的。
為了制作一個可直接重現的示例,這里是為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')
產生
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.