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

如何使用factoextra::fviz_pca_biplot或ggbiplot在双标图中选择性标记点

解决PCA双标图仅标记指定离群点的问题

步骤1:加载包与数据处理

先加载所需工具包,提取peng数据集中的数值变量用于PCA分析:

library(heplots)
library(factoextra)
library(ggplot2)

# 导入清理后的企鹅数据集
data(peng)

# 筛选数值型变量(排除分类变量)
peng_num <- peng[, c("bill_length", "bill_depth", "flipper_length", "body_mass")]

# 执行标准化PCA
pca_result <- prcomp(peng_num, scale. = TRUE)

步骤2:创建目标点标签向量

生成仅包含指定离群点(10、35、283)编号的标签向量,其余位置为空:

target_rows <- c(10, 35, 283)
lab <- rep("", nrow(peng))
lab[target_rows] <- as.character(target_rows)

步骤3:绘制带指定标签的PCA双标图

如果直接用fviz_pca_biplot的label_ind参数未显示标签,可通过手动添加文本标签的方式实现:

# 绘制基础双标图(不显示所有点标签)
p <- fviz_pca_biplot(pca_result,
                     data = peng,
                     label_var = "var",  # 保留变量标签
                     label_ind = "none", # 隐藏所有点的默认标签
                     col.ind = ifelse(1:nrow(peng) %in% target_rows, "red", "black"), # 离群点标红
                     col.var = "blue",
                     ggtheme = theme_minimal())

# 提取目标点的PCA得分数据
pca_scores <- as.data.frame(pca_result$x)
target_data <- pca_scores[target_rows, ]
target_data$label <- as.character(target_rows)

# 添加离群点标签
p + geom_text(data = target_data, aes(x = PC1, y = PC2, label = label),
              color = "red", size = 4, vjust = -1)

关键说明

  • 若你之前用label_ind = lab无显示,大概率是fviz_pca_biplot对空标签的过滤机制导致,手动添加geom_text能绕开这个问题。
  • 确认target_rows是数据集的行索引,若你所说的"编号"是观测的自定义ID而非行号,需先通过匹配ID找到对应行索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:39:54