2

我无法获得变量标签不与 ggbiplot 重叠

(使用 RStudio 1.1.463 和 R 版本 3.5.3)

我正在使用prcomp运行 pca,但我得到了这种变量标签重叠: 在此处输入图像描述

这是一个例子:

library(ggbiplot)
data(wine)
wine_subset<-subset(wine[,c(6:7,9,12)])
wine.pca <- prcomp(wine_subset, scale. = TRUE)
print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = TRUE, circle = TRUE))

我试图解决从 ggrepel 包中添加此代码的问题:

library(ggrepel)
+geom_text_repel(aes(labels=colnames(wine_subset)))

但它返回以下错误:

警告:忽略未知的美学:标签错误:美学的长度必须为 1 或与数据相同(178):标签

在我看来,它正在尝试获取行标签,但我在情节中不需要它们。我只需要变量标签。

4

2 回答 2

0

我用ggfortify包找到了一个更好的解决方案,它有一个简单的参数loadings.label.repel

library(ggbiplot)   #just for using the same example database as before
library(ggfortify)

data(wine)

wine_subset<-subset(wine[,c(6:7,9,12)])

wine.pca <- prcomp(wine_subset, scale. = TRUE)

wine$wine.class <- wine.class    #adding wine classes to wine data frame

autoplot(wine.pca, data=wine, colour="wine.class", loadings = TRUE, loadings.colour = 'brown',
         loadings.label.colour='brown', loadings.label = TRUE, loadings.label.size = 4,
         loadings.label.repel=TRUE)+stat_ellipse(type = "norm", 
         level=0.68,aes(color=wine.class))

结果图: 在此处输入图像描述

于 2019-05-17T21:39:12.320 回答
0

这是一个 hack,它为其中一个变量名添加了换行符,因此它不会与另一个变量名重叠:

library(ggbiplot)
data(wine)
wine_subset<-subset(wine[,c(6:7,9,12)])
colnames(wine_subset)[2] <- "\nFlav"  # new line
wine.pca <- prcomp(wine_subset, scale. = TRUE)
print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = TRUE, circle = TRUE))

只要确保只使用新的列名进行绘图。

在此处输入图像描述

于 2019-05-17T13:30:36.457 回答