ordixyplot()
在vegan或ggvegan包中有一些更简单的方法来绘制这些多面图(目前是 alpha,所以有时需要手工完成一些简单的事情)。
例子
# Packages
library("vegan")
library("ggvegan")
# Sample data
data(dune, dune.env)
# PCA
pca1 <- rda(dune, scale = TRUE)
ggvegan版本_
就像我说的,你需要手工和当下做一些修改,但是你可以通过 ggplot 免费获得图例。
## use fortify method to extract scores in ggplot-friendly format
scrs <- fortify(pca1, scaling = 3)
## take only site scores for this
scrs <- with(scrs, scrs[Score == "sites", ])
## add on Moisture variable
scrs <- cbind(scrs, Moisture = dune.env$Moisture)
## for all points on one plot, Moisture coded by colour
plt <- ggplot(scrs, aes(x = Dim1, y = Dim2, colour = Moisture)) +
geom_point() + coord_fixed()
plt
## to facet that plot into multiple panels
plt + facet_wrap( ~ Moisture)
ordixyplot()
版本_
ordixyplot()
与ggvegan版本相比,更多的工作是在内部完成的,但是你必须更加努力地添加密钥(图例),我永远不记得如何使用 Lattice 来做到这一点。
## Single plot
ordixyplot(pca1, data = dune.env, formula = PC1 ~ PC2, group = Moisture)
## Facet plot
ordixyplot(pca1, data = dune.env, formula = PC1 ~ PC2 | Moisture)
基础图形
对于基本图形,有一个更简单的版本可以为单个图上的点着色。一个版本是
scrs <- scores(pca1, display = "sites")
cols <- c("red","green","blue","orange","purple")
plot(scrs[,1], scrs[,2], pch = 19,
col = cols[as.numeric(as.character(dune.env$Moisture))])
legend("topright", legend = 1:5, title = "Moisture", pch = 19,
col = cols, bty = "n")
您可以在我几年前写的一篇博客文章中找到更多关于使用基本图形以这种方式绘制的信息。