我试图用stats::biplot R包中的ggplot2::autoplot复制下面的ggfortify绘图。
biplot(prcomp(USArrests, scale = TRUE))

下面是我来自ggfortify R包的ggfortify代码及其输出。
devtools::install_github("sinhrks/ggfortify")
library(ggfortify)
ggplot2::autoplot(stats::prcomp(USArrests, scale=TRUE), label = TRUE, loadings.label = TRUE)

问题
发布于 2015-02-09 11:48:24
谢谢你使用这个包裹。此问题取决于{dplyr}版本,并在{ggfortify}中修复。你能更新一下包裹然后再试一试吗?
我已经将修复后的结果附加到下面的链接:
发布于 2015-02-08 20:50:56
要在ggplot2中重新创建此图,只需从prcomp对象中提取所需的数据即可。在这种情况下,您将绘制原始数据以及可变的旋转加载,因此需要两个数据帧。
试试这个:
x <- prcomp(USArrests, scale = TRUE)
z1 <- data.frame(State = rownames(x$x), x$x[, 1:2])
z2 <- data.frame(State = rownames(x$rotation), x$rotation[, 1:2])
library(ggplot2)
ggplot(z1, aes(PC1, PC2, label=State)) +
geom_text(size=3) +
geom_segment(data=z2, aes(PC1, PC2, xend=0, yend=0), col="red") +
geom_text(data=z2, aes(PC1, PC2, label=State), col="red") +
theme_bw()

发布于 2015-08-10 08:31:39
自动绘图模拟使用biplot.prcomp选项pc.biplot = TRUE获得的行为/缩放:
devtools::install_github("sinhrks/ggfortify")
library(ggfortify)
ggplot2::autoplot(stats::prcomp(USArrests, scale=TRUE), label = TRUE, loadings.label = TRUE)

biplot(prcomp(USArrests, scale = TRUE), pc.biplot = TRUE)

然后,它产生加布里埃尔(1971)的“主成分双图”,其中观测值被sqrt(n)放大,变量被sqrt(n)缩小。变量之间的内积则近似协方差,观测之间的距离近似马氏距离。通常情况下,这是您想要的,也请参阅详细的扩展这里。
PS:上面标记为正确的答案并不是我所相信的正确答案。
https://stackoverflow.com/questions/28395517
复制相似问题