首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggfortify中的自动绘图-只绘制PCA的一些值

ggfortify中的自动绘图-只绘制PCA的一些值
EN

Stack Overflow用户
提问于 2022-07-07 14:15:49
回答 1查看 129关注 0票数 2

我遵循这个文档(https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html)来运行虹膜数据集上的PCA。

代码语言:javascript
复制
library(ggfortify)
df <- iris[1:4]
pca_res <- prcomp(df, scale. = TRUE)

autoplot(pca_res, data = iris, colour = 'Species')

我运行了上面的代码,得到了三个按物种着色的集群。我只想画一个特定的物种。在这种情况下,我怎么能只画出物种的位置呢?

EN

回答 1

Stack Overflow用户

发布于 2022-07-08 15:02:27

由于autoplot返回的对象是一个ggplot对象,一个选项是手动过滤传递给遮罩下的geom_point层的数据。在您的示例中,这非常简单,因为ggplot只有一个层,我们可以通过p$layers[[1]]访问该层,而该层的数据可以通过p$layers[[1]]$data访问。

代码语言:javascript
复制
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

编辑的另一个选项是通过使不可见类别“删除”不想要的类别。这样,轴的原始比例尺就会保持不变。当然,也可以使用过滤的方法,但另外将刻度设置为未过滤的数据。

代码语言:javascript
复制
p + 
  scale_color_manual(values = c("versicolor" = "transparent", "virginica" = "transparent", setosa = "red"), breaks = "setosa")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72899425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档