【发布时间】:2013-02-05 15:52:37
【问题描述】:
我正在完成我在 vegan 和 ggplot2 中创建的 NMDS 图,但无法弄清楚如何将 envfit 物种加载向量添加到图中。当我尝试它说“无效的图形状态”。
下面的示例是从另一个问题 (Plotting ordiellipse function from vegan package onto NMDS plot created in ggplot2) 稍微修改的,但它准确地表达了我想要包含的示例,因为我首先使用这个问题来帮助我将 metaMDS 放入 ggplot2:
library(vegan)
library(ggplot2)
data(dune)
# calculate distance for NMDS
NMDS.log<-log(dune+1)
sol <- metaMDS(NMDS.log)
# Create meta data for grouping
MyMeta = data.frame(
sites = c(2,13,4,16,6,1,8,5,17,15,10,11,9,18,3,20,14,19,12,7),
amt = c("hi", "hi", "hi", "md", "lo", "hi", "hi", "lo", "md", "md", "lo",
"lo", "hi", "lo", "hi", "md", "md", "lo", "hi", "lo"),
row.names = "sites")
# plot NMDS using basic plot function and color points by "amt" from MyMeta
plot(sol$points, col = MyMeta$amt)
# same in ggplot2
NMDS = data.frame(MDS1 = sol$points[,1], MDS2 = sol$points[,2])
ggplot(data = NMDS, aes(MDS1, MDS2)) +
geom_point(aes(data = MyMeta, color = MyMeta$amt))
#Add species loadings
vec.sp<-envfit(sol$points, NMDS.log, perm=1000)
plot(vec.sp, p.max=0.1, col="blue")
【问题讨论】:
-
+1 很好的问题。请研究我的答案,看看应该如何从对象中提取分数或绘制它们。您不应该,在大多数情况下,vegan 需要执行
sol$points之类的操作,因为我们为此提供了scores()方法以及plot()方法。