我对R还是很陌生,尝试学习如何使用纯素库,我可以使用普通绘图功能轻松地在R中绘图。当我想在ggplot中绘制数据时会出现问题。我知道我必须从创建的列表中提取正确的数据,但是哪些以及如何?我一直在练习的数据集可以在此处下载https://drive.google.com/file/d/0B1PQGov60aoudVR3dVZBX1VKaHc/view?usp=sharing
我一直在使用的代码来转换数据是这样的:

library(vegan)
library(dplyr)
library(ggplot2)
library(grid)
data <- read.csv(file = "People.csv", header = T, sep = ",", dec = ".", check.names = F, na.strings=c("NA", "-", "?"))
data2 <- data[,-1]
rownames(data2) <- data[,1]
data2 <- scale(data2, center = T, scale = apply(data2, 2, sd))
data2.pca <- rda(data2)

这给了我一个列表,我可以使用基本的“plot”和“biplot”函数进行绘制,但是我对如何在ggplot中同时绘制PCA和biplot感到困惑。我还想按组为数据点着色,例如性别。任何帮助都会很棒。

最佳答案

软件包ggbiplot(...)中有一个ggbiplot函数,但仅适用于prcomp,princomp,PCA或lda类的对象。
plot.rda(...)只是在PC1-PC2空间中定位每个个案(人)。 biplot.rda(...)将 vector 添加到原始数据集中每个变量的PC1和PC2加载中。事实证明plot.rda(...)biplot.rda(...)使用通过汇总rda对象而不是rda对象本身而产生的数据。

smry <- summary(data2.pca)
df1  <- data.frame(smry$sites[,1:2])       # PC1 and PC2
df2  <- data.frame(smry$species[,1:2])     # loadings for PC1 and PC2
rda.plot <- ggplot(df1, aes(x=PC1, y=PC2)) +
  geom_text(aes(label=rownames(df1)),size=4) +
  geom_hline(yintercept=0, linetype="dotted") +
  geom_vline(xintercept=0, linetype="dotted") +
  coord_fixed()
rda.plot

r - 在ggplot中绘制RDA(纯素)-LMLPHP
rda.biplot <- rda.plot +
  geom_segment(data=df2, aes(x=0, xend=PC1, y=0, yend=PC2),
               color="red", arrow=arrow(length=unit(0.01,"npc"))) +
  geom_text(data=df2,
            aes(x=PC1,y=PC2,label=rownames(df2),
                hjust=0.5*(1-sign(PC1)),vjust=0.5*(1-sign(PC2))),
            color="red", size=4)
rda.biplot

r - 在ggplot中绘制RDA(纯素)-LMLPHP

如果将这些结果与plot(data2.pca)biplot(data2.pca)进行比较,我想您会发现它们是相同的。相信或不相信,到目前为止,最困难的部分是使文本与箭头正确对齐。

关于r - 在ggplot中绘制RDA(纯素),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32194193/

10-08 21:10