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

基于Treatment和Variety分组的PCA双图绘制技术求助

解决方案

1. 修正PCA数据预处理

PCA分析仅需数值型观测变量(如示例中的ARI、NDVI_1等30个指标),需排除所有分类/标识列(Treatment、Variety、Rep),而非仅删除Treatment:

# 提取数值型变量列(假设前3列为分类/标识列,后续为观测变量)
pca_data <- all.data[, -c(1:3)]
# 执行PCA并标准化数据
res.pca <- prcomp(pca_data, scale. = TRUE)

2. 实现两层分组的PCA双图

fviz_pca_biplot的habillage仅支持单一分组维度,要同时用颜色区分Treatment、形状区分Variety,可通过以下两种方式实现:

方法一:直接扩展fviz_pca_biplot参数

library(factoextra)
library(ggplot2)

fviz_pca_biplot(res.pca, 
                label = "var",  # 仅显示变量标签
                repel = TRUE,   # 避免标签重叠
                # 映射样本点属性:颜色绑定Treatment,形状绑定Variety
                point.params = list(aes(color = all.data$Treatment, shape = all.data$Variety)),
                # 按Treatment分组添加95%置信椭圆
                addEllipses = TRUE, 
                ellipse.level = 0.95,
                ellipse.group = all.data$Treatment,
                ggtheme = theme_minimal()) +
  # 自定义配色与图例名称(可选)
  scale_color_brewer(palette = "Set1") +
  labs(color = "处理(Treatment)", shape = "品种(Variety)")

方法二:拆分样本与变量图层(更灵活)

若需精细化控制,可分别绘制样本点和变量箭头后组合:

# 绘制样本点图层:颜色区分Treatment,形状区分Variety,添加Treatment分组椭圆
p_ind <- fviz_pca_ind(res.pca, 
                      geom = "point",
                      aes(color = all.data$Treatment, shape = all.data$Variety),
                      addEllipses = TRUE,
                      ellipse.level = 0.95,
                      ellipse.group = all.data$Treatment,
                      show.legend = FALSE)

# 绘制变量箭头图层
p_var <- fviz_pca_var(res.pca, 
                      geom = "arrow",
                      repel = TRUE,
                      show.legend = FALSE)

# 组合图层并优化样式
p_ind + p_var +
  scale_color_brewer(palette = "Set1") +
  labs(color = "处理(Treatment)", shape = "品种(Variety)") +
  theme_minimal() +
  theme(legend.position = "bottom")

关键注意事项

  • 务必保证PCA输入为纯数值型变量,分类列和重复编号列不能纳入分析,否则会导致PCA结果失真。
  • 若Variety为数值格式(如示例中的"5""7"),需先转换为因子:all.data$Variety <- as.factor(all.data$Variety),避免形状被识别为连续变量。
  • ellipse.group可单独指定椭圆的分组维度,实现椭圆与样本点属性的分层控制。

内容的提问来源于stack exchange,提问作者Aria P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:43:13