素食主义者的 NMDS 图未按群体着色
NMDS plot with vegan not coloured by groups
我尝试使用一个脚本来绘制 NMDS,它以前工作得很好......但我改变了 R 版本(Ubuntu 20.04 上的 R 4.1.2),我再也无法获得 NMDS 彩色图表。
我收到这个错误
“物种分数不可用”
我得到了很好的 NMDS 表示,但我无法根据“TypeV”对其进行着色 - 请参阅下面的代码 -(我之前得到它)
我的数据TESTNMDS.csv
data <- read.table('TESTNMDS.csv',header = T, sep = ",")
coldit=c( "#FFFF33","#E141B9", "#33FF66", "#3333FF")
abundance.matrix <- data[,3:50]
for (j in ncol(abundance.matrix):1) if (colSums(abundance.matrix[j]) < 1)
bundance.matrix <-abundance.matrix[ , -j]
dist_data<-vegdist(abundance.matrix^0.5, method='bray')
nmds <- metaMDS(dist_data, trace =TRUE, try=500)
plot(nmds)
> plot(nmds)
species scores not available
如果我尝试使用各种表示(以前有效)进行绘图,我无法获得颜色
orditorp(nmds,display="sites",col=coldit[data$TypeV])
ordipointlabel(nmds, display = "sites", cex=1, pch=16, col=coldit[datat$TypeV])
ordispider(nmds, groups=data$TypeV,label=TRUE)
ordihull(nmds, groups=data$TypeV, lty="dotted")
非常感谢!
主要问题是 R 不再自动将字符数据转换为因子,因此您必须明确地进行转换。这是您的代码,经过一些简化:
library(vegan)
data <- read.table('TESTNMDS.csv',header = T, sep = ",")
data$TypeV <- factor(data$TypeV) # make TypeV a factor
coldit=c( "#FFFF33","#E141B9", "#33FF66", "#3333FF")
abundance.matrix <- data[,3:50]
idx <- colSums(abundance.matrix) > 0
abundance.matrix <- abundance.matrix[ , idx]
dist_data<-vegdist(abundance.matrix^0.5, method='bray')
nmds <- metaMDS(dist_data, trace =TRUE, try=500)
plot(nmds)
orditorp(nmds,display="sites",col=coldit[data$TypeV])
您不需要循环来消除列,因为 R 是矢量化的。
我尝试使用一个脚本来绘制 NMDS,它以前工作得很好......但我改变了 R 版本(Ubuntu 20.04 上的 R 4.1.2),我再也无法获得 NMDS 彩色图表。
我收到这个错误 “物种分数不可用”
我得到了很好的 NMDS 表示,但我无法根据“TypeV”对其进行着色 - 请参阅下面的代码 -(我之前得到它)
我的数据TESTNMDS.csv
data <- read.table('TESTNMDS.csv',header = T, sep = ",")
coldit=c( "#FFFF33","#E141B9", "#33FF66", "#3333FF")
abundance.matrix <- data[,3:50]
for (j in ncol(abundance.matrix):1) if (colSums(abundance.matrix[j]) < 1)
bundance.matrix <-abundance.matrix[ , -j]
dist_data<-vegdist(abundance.matrix^0.5, method='bray')
nmds <- metaMDS(dist_data, trace =TRUE, try=500)
plot(nmds)
> plot(nmds)
species scores not available
如果我尝试使用各种表示(以前有效)进行绘图,我无法获得颜色
orditorp(nmds,display="sites",col=coldit[data$TypeV])
ordipointlabel(nmds, display = "sites", cex=1, pch=16, col=coldit[datat$TypeV])
ordispider(nmds, groups=data$TypeV,label=TRUE)
ordihull(nmds, groups=data$TypeV, lty="dotted")
非常感谢!
主要问题是 R 不再自动将字符数据转换为因子,因此您必须明确地进行转换。这是您的代码,经过一些简化:
library(vegan)
data <- read.table('TESTNMDS.csv',header = T, sep = ",")
data$TypeV <- factor(data$TypeV) # make TypeV a factor
coldit=c( "#FFFF33","#E141B9", "#33FF66", "#3333FF")
abundance.matrix <- data[,3:50]
idx <- colSums(abundance.matrix) > 0
abundance.matrix <- abundance.matrix[ , idx]
dist_data<-vegdist(abundance.matrix^0.5, method='bray')
nmds <- metaMDS(dist_data, trace =TRUE, try=500)
plot(nmds)
orditorp(nmds,display="sites",col=coldit[data$TypeV])
您不需要循环来消除列,因为 R 是矢量化的。