1

我正在尝试使用from package重现以下stats::biplot情节。ggplot2::autoplotggfortify R

biplot(prcomp(USArrests, scale = TRUE))

在此处输入图像描述

这是我ggplot2::autoplot的包中的代码ggfortify R及其输出。

devtools::install_github("sinhrks/ggfortify")
 library(ggfortify)
ggplot2::autoplot(stats::prcomp(USArrests, scale=TRUE), label = TRUE, loadings.label = TRUE)

在此处输入图像描述

问题

  1. 为什么两个情节不同?如何重现基础情节?
  2. 如何添加基本图中所示的标签?
4

3 回答 3

2

感谢您使用该软件包。该问题取决于 {dplyr} 版本,并已在 {ggfortify} 中修复。您可以更新软件包然后尝试吗?

我已将修复后的结果附加到以下链接:

https://github.com/sinhrks/ggfortify/pull/21

于 2015-02-09T11:48:24.657 回答
1

要在 中重新创建此图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-02-08T20:50:56.053 回答
0

Autoplot 模拟您使用biplot.prcompoption获得的行为/缩放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)

在此处输入图像描述

然后它产生 Gabriel (1971) 的“主成分双图”,其中观察值按 sqrt(n) 放大,变量按 sqrt(n) 缩小。然后变量之间的内积近似于协方差,而观测值之间的距离近似于马氏距离。通常这就是您想要的,另请参阅此处的详细说明。

ggord btw 和ggbiplot一样,也是一个不错的制作双图的软件包。

PS:上面标记为正确的答案并不是我认为的正确答案。

于 2015-08-10T08:31:39.990 回答