在 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
我有一个用 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