在 PCA 图中仅绘制 2 个椭圆(而不是 20 个)

Draw only 2 ellipses in PCA plot (instead of 20)

我有一个用 ggplot/ggfortify 创建的主成分分析图 和函数 autoplot(),例如在这个问题中:Change point colors and color of frame/ellipse around points

head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
df <- iris[c(1, 2, 3, 4)]
autoplot(prcomp(df))
autoplot(prcomp(df), data = iris, colour = 'Species')
autoplot(prcomp(df), data = iris, colour = 'Species', shape='Species', frame=T) 

有没有办法在 PCA 图中只绘制 1 或 2 frames/ellipses,而不是全部?

使用 autoplot 的问题在于,尽管它非常适合轻松生成常见数据结构和模型的漂亮可视化效果,但它并不能让您完全自由地自定义绘图。然而,在 ggplot 中完成所有事情非常简单。以下是完整的代表:

library(ggplot2)

pc <- prcomp(iris[1:4])
df <- cbind(pc$x[,1:2], iris)

ggplot(df, aes(PC1, PC2, color = Species)) + 
  geom_point() +
  stat_ellipse(geom = "polygon", aes(fill = after_scale(alpha(colour, 0.3))),
               data = df[df$Species != "versicolor",])

reprex package (v2.0.1)

创建于 2022-02-21