我遵循这个文档(https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html)来运行虹膜数据集上的PCA。
library(ggfortify)
df <- iris[1:4]
pca_res <- prcomp(df, scale. = TRUE)
autoplot(pca_res, data = iris, colour = 'Species')我运行了上面的代码,得到了三个按物种着色的集群。我只想画一个特定的物种。在这种情况下,我怎么能只画出物种的位置呢?
发布于 2022-07-08 15:02:27
由于autoplot返回的对象是一个ggplot对象,一个选项是手动过滤传递给遮罩下的geom_point层的数据。在您的示例中,这非常简单,因为ggplot只有一个层,我们可以通过p$layers[[1]]访问该层,而该层的数据可以通过p$layers[[1]]$data访问。
library(ggfortify)
#> Loading required package: ggplot2
df <- iris[1:4]
pca_res <- prcomp(df, scale. = TRUE)
p <- autoplot(pca_res, data = iris, colour = 'Species')
p$layers[[1]]$data <- p$layers[[1]]$data[p$layers[[1]]$data$Species == "setosa", ]
p

编辑的另一个选项是通过使不可见类别“删除”不想要的类别。这样,轴的原始比例尺就会保持不变。当然,也可以使用过滤的方法,但另外将刻度设置为未过滤的数据。
p +
scale_color_manual(values = c("versicolor" = "transparent", "virginica" = "transparent", setosa = "red"), breaks = "setosa")

https://stackoverflow.com/questions/72899425
复制相似问题