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

R语言PCA图如何叠加两类分组信息:按Kingdom画椭圆按Class着色

双分组特征PCA图实现方案

你要同时实现按Kingdom绘制置信椭圆、按Class给样本点着色的需求,可直接基于返回的ggplot对象叠加自定义图层实现,以下是两种常用方案:

方案1:基于ggfortify实现

autoplot返回的是标准ggplot对象,你不需要复用自带的frame参数,直接额外叠加stat_ellipse层按Kingdom分组画椭圆即可:

# 加载依赖包
library(ggplot2)
library(ggfortify)

# 原有PCA计算逻辑不变
pca_df <- prcomp(df[,-c(1,2)], scale. = TRUE)

# 绘图
p <- autoplot(pca_df, data = df, colour = 'Class', size = 3) +
  # 叠加Kingdom分组的95%正态置信椭圆,可自定义线型、粗细、填充效果
  stat_ellipse(aes(group = Kingdom, color = Kingdom), linetype = 2, linewidth = 1) +
  # 若需要椭圆填充半透明背景,替换为下方代码即可
  # stat_ellipse(aes(group = Kingdom, fill = Kingdom), alpha = 0.1, geom = "polygon", linetype = 2) +
  theme_bw()

print(p)

方案2:基于factoextra实现

你之前的参数使用有误,同样可以在fviz_pca_ind返回的图上叠加椭圆层:

library(factoextra)

p <- fviz_pca_ind(pca_df,
             data = df,
             col.ind = "Class", # 样本点按Class着色
             repel = TRUE, # 样本标签防重叠
             size = 3,
             legend.title = list(colour = "Class")) +
  # 叠加Kingdom分组置信椭圆
  stat_ellipse(aes(group = Kingdom, color = Kingdom), linetype = 2, linewidth = 1) +
  theme_bw()

print(p)

可选调整技巧

  • 若要避免椭圆颜色和样本点颜色混淆,可将椭圆固定为灰阶色系:stat_ellipse(aes(group = Kingdom), color = c("black", "gray50")[as.factor(df$Kingdom)], linetype = 2)
  • 调整置信水平:在stat_ellipse中添加level = 0.9即可改为90%置信区间,默认值为0.95
  • 更换椭圆类型:在stat_ellipse中添加type = "t"即可使用t分布椭圆,支持的类型和autoplot的frame.type参数完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:15:03