You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

主成分分析(PCA)个体图分组筛选显示技术咨询

当然可以实现啦!针对你提到的PCA个体图因分组过多导致可读性差的问题,我们可以通过两种实用方式解决——筛选特定分组绘图,或者批量生成多张分组专属图。下面用鸢尾花数据集给你演示具体操作:

1. 仅展示特定分组的PCA个体图

核心思路是:先基于全量数据完成PCA计算(保证主成分的准确性),再通过筛选索引只保留目标分组的个体进行绘图。

方式一:仅展示单个分组(比如setosa)

library(ggplot2)
library(factoextra)
data(iris)

# 基于全量数据执行PCA
res.pca <- prcomp(iris[, -5], scale = TRUE)

# 筛选setosa组的个体索引
setosa_indices <- which(iris$Species == "setosa")
# 绘制仅包含setosa的PCA个体图
fviz_pca_ind(res.pca, label="none", habillage=iris$Species, select.ind = list(name = setosa_indices))

方式二:展示多个指定分组(比如setosa + versicolor)

只需扩展筛选的分组范围即可:

# 筛选setosa和versicolor的个体索引
target_indices <- which(iris$Species %in% c("setosa", "versicolor"))
# 绘制包含这两个组的PCA个体图
fviz_pca_ind(res.pca, label="none", habillage=iris$Species, select.ind = list(name = target_indices))

这里用到的select.ind参数是factoextra包的实用功能,通过指定个体索引就能精准控制要展示的内容。

2. 批量生成多张PCA个体图

如果需要给每个分组单独生成一张图,可以用循环自动完成:

# 获取数据中所有唯一的分组
all_groups <- unique(iris$Species)

# 循环遍历每个分组,生成并展示专属PCA图
for (single_group in all_groups) {
  group_indices <- which(iris$Species == single_group)
  # 生成带标题的图
  pca_plot <- fviz_pca_ind(res.pca, label="none", habillage=iris$Species, select.ind = list(name = group_indices)) +
    ggtitle(paste("PCA个体图 -", single_group))
  # 展示图片
  print(pca_plot)
  
  # (可选)如果需要保存图片到本地,取消下面注释即可
  # ggsave(paste0("pca_ind_", single_group, ".png"), pca_plot, width = 8, height = 6)
}

运行这段代码后,会自动为每个分组生成一张独立的PCA个体图,还能按需保存到本地文件夹。

内容的提问来源于stack exchange,提问作者Elia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:37:20