使用 ggfortify 和 ggrepel 进行主成分分析(PCA)

8

我正在运行一个使用varimax旋转的主成分分析,并希望显示图形。看起来很简单,但我的载荷向量在某些地方非常接近,并且它们所属的因子标签往往会重叠。这就是ggrepel发挥作用的地方,以便分离标签。现在我的问题是如何将两者连接起来。我使用了自动绘图,它会自动添加所需的文本,这使得定义要避开的文本变得困难。可能还有其他方法可以解决这个问题,我愿意听取建议。我有一个代码可以工作,但存在重叠问题,以下是我尝试避开代码的其中一种方法。

autoplot(prcomp(built.df9),
loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
loadings.label.size = 4, loading.label.color = 'red') +
ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
Environment Indicators") +
geom_text_repel(aes(label = rownames(prcomp(built.df9))))

enter image description here

autoplot(prcomp(built.df9),
loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
loadings.label.size = 4, loading.label.color = 'red') +
ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
Environment Indicators")
2个回答

11
您可以使用ggfortify包中的loadings.label.repel=T。这个例子使用了与您相同的代码,只是使用了mtcars数据集。没有被排斥的标签:
library(ggplot2)
library(ggfortify)

autoplot(prcomp(mtcars),
         loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
         loadings.label.size = 4, loading.label.color = 'red') +
  ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
          Environment Indicators") 

图片描述在此

使用排斥标签:

autoplot(prcomp(mtcars),
         loadings = TRUE, loadings.colour = 'blue', loadings.label = TRUE, 
         loadings.label.size = 4, loading.label.color = 'red',loadings.label.repel=T) +
  ggtitle(label = "Principal Component Analysis and Varimax Rotation for Built 
          Environment Indicators") 

enter image description here


1
非常感谢J. Con,它立即解决了我的问题! - E. Nicholson

1

您没有提供任何数据以使此过程可重现,但是您可以尝试使用软件包ggbiplot来获得更好的结果。

library(ggbiplot)

data(mtcars)

standardised<-as.data.frame(scale(mtcars[2:ncol(mtcars)]))

mtcars.pca<-prcomp(standardised,retx=TRUE)

ggbiplot(mtcars.pca, obs.scale=1, var.scale=1,  ellipse=F, circle=F,labels.size = 4)

enter image description here


我尝试使用ggbiplot,但是我的R版本是3.4.1 beta,并且它不可用。当我尝试安装该软件包时,我收到以下响应: “> install.packages(“ ggbiplot”) 正在将软件包安装到‘C:/Users/efn1/R Library’ (因为未指定‘lib’) 警告:install.packages:软件包‘ggbiplot’不可用(适用于R版本3.4.1 beta)” - E. Nicholson
好的。您能在问题中提供 dput(built.df9) 的输出以便于重现吗? - J.Con
我无法放置dput,因为输出内容太大而无法适应示例。很抱歉难以复制,但我的数据集非常大。 - E. Nicholson
@E.Nicholson ggbiplot包在CRAN中不可用。因此,无法使用install.packages("ggbiplot")进行安装。您必须使用devtools库,例如library(devtools) install_github("vqv/ggbiplot") - UseR10085

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接