0

我有一个使用 ggplot/ggfortify 和函数创建的 PCA 图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 个帧/椭圆,而不是全部?

4

1 回答 1

2

使用的问题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 包于 2022-02-21 创建(v2.0.1)

于 2022-02-21T21:37:58.497 回答