R:ggfortify:“autoplot不支持prcomp类型的对象”

时间:2015-05-05 14:43:19

标签: r pca ggfortify

我正在尝试使用ggfortify来显示我使用prcomp做的PCA的结果。

示例代码:

iris.pca <- iris[c(1, 2, 3, 4)] 
autoplot(prcomp(iris.pca))  
  

错误:autoplot不支持prcomp类型的对象。请改用qplot()或ggplot()。

奇怪的是,autoplot专门用于处理prcomp - ggplot的结果,而qplot无法处理这样的对象。我正在运行R版本3.2,刚刚从github上下载了ggfortify。

任何人都可以解释这个消息吗?

2 个答案:

答案 0 :(得分:7)

我猜你没有加载所需的库,代码如下:

library(devtools)
install_github('sinhrks/ggfortify')
library(ggfortify); library(ggplot2)
data(iris)
iris.pca <- iris[c(1, 2, 3, 4)] 
autoplot(prcomp(iris.pca))

会奏效 enter image description here

答案 1 :(得分:2)

即使ggfortify简单易用,我也不鼓励使用标准ggplot2函数(例如警告replacing previous import ‘dplyr::vars’ by ‘ggplot2::vars’ when loading ‘ggfortify’)。一个明智的解决方法是直接使用ggplot2

我在这里提出两个版本及其结果。

# creating the PCA obj using iris data set
iris.pca <- iris[c(1, 2, 3, 4)] 
pca.obj <- prcomp(iris.pca)

# ggfortify way - w coloring
library(ggfortify)
autoplot(pca.obj) + theme_minimal()  


# ggplot2 way - w coloring
library(ggplot2)
dtp <- data.frame('Species' = iris$Species, pca.obj$x[,1:2]) # the first two componets are selected (NB: you can also select 3 for 3D plottings or 3+)
ggplot(data = dtp) + 
       geom_point(aes(x = PC1, y = PC2, col = Species)) + 
       theme_minimal() 

注意:使用简单的ggplot2数据帧结构着色要容易得多。

theplot