2

有没有办法为fviz_pca_biplot()R 包 FactoExtra 中的变量指定形状?

例如我有以下代码:

data("iris")

PCA.iris <- prcomp(iris[ , -5], scale=TRUE)

BiPlot<- fviz_pca_biplot(PCA.iris, 
                      geom = c("point", "text"), 
                      geom.var = c("point", "text"),
                      palette="ucscgb",
                      label="var",       
                      col.ind=iris$Species,
                      invisible="quali",
                      pointshape = 19, pointsize = 3) +
                      labs(colour= "Species" )+
                      theme_gray() +
                     theme(plot.title = element_text(hjust = 0.5,size = 20, face = "bold"),
                           legend.title = element_text(size = 12), 
                           legend.text = element_text(size = 8),
                           legend.key.size = unit(0.5,"line") )+
                     guides(shape = guide_legend(override.aes = list(size = 4)),
                           color = guide_legend(override.aes = list(size = 4)) )
print(BiPlot)

但它使varind的形状相同,我希望var的形状不同(形状 15)。当 geom.var = c("point", "text") 设置为 point 时,参数“pointshape”似乎同时适用于varind 。

我试过使用scale_shape_manual()

 BiPlot+
 scale_shape_manual(values=15) 

但它不适用,我猜这是由于geom中的“点”使用geom_point,我无法指定我想应用它的点,但这只是一个疯狂的猜测。

是否可以将varind的pointshape 设置为不同的值,然后如何完成?

4

1 回答 1

1

您只对数据点使用“文本”,fviz_pca_biplot这将确保您的 var 形状为 15。然后您为各个数据点调用另一个 geom_point() 并指定形状:

library(ggsci)
library(factoextra)

data("iris")

PCA.iris <- prcomp(iris[ , -5], scale=TRUE)

BiPlot<- fviz_pca_biplot(PCA.iris, 
                      geom = "text", 
                      geom.var = c("point", "text"),
                      label="var",
                      col.ind=iris$Species,       
                      invisible="quali",
                      pointshape = 15, pointsize = 3) +
                      geom_point(aes(col = Col.),shape=10)+
                      labs(colour= "Species" )+
                      scale_color_ucscgb() +
                      theme_gray() 
                 

在此处输入图像描述

于 2021-12-12T19:12:09.213 回答