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

求助:按条件分组的重复样本PCA图着色与椭圆分组实现

问题解决:表达数据PCA图按条件着色及添加分组椭圆

核心问题

你当前的代码存在两个关键问题:

  • 表达数据格式错误:prcomp默认将行作为观测值,列作为变量,你传入的是基因在行、样本在列的数据,导致PCA分析的是基因而非样本的差异,完全偏离需求。
  • 缺少样本分组信息:原始数据中没有记录每个样本对应的条件(O/FO/F),无法让autoplot识别分组进行着色和椭圆绘制。

分步解决方案

1. 整理数据格式并创建分组信息

首先转置表达数据,让样本作为行、基因作为列,同时提取样本名并生成对应的分组标签:

# 提取表达矩阵(去掉Gene_ID列)
expr_matrix <- PcA_Plot_Data[, -1]
# 转置矩阵:样本为行,基因为列
expr_matrix_t <- t(expr_matrix)
# 转换为数据框并添加样本名列
expr_df <- as.data.frame(expr_matrix_t)
expr_df$Sample <- rownames(expr_df)
# 生成分组标签:从样本名中提取前缀(O/FO/F)
expr_df$Group <- substr(expr_df$Sample, 1, nchar(expr_df$Sample)-1)

2. 重新运行PCA分析

基于转置后的样本级数据运行PCA:

expression.pca <- prcomp(expr_df[, -c(ncol(expr_df)-1, ncol(expr_df))],
                         centre = TRUE,
                         scale. = TRUE)
summary(expression.pca)

3. 绘制带分组着色和椭圆的PCA图

使用ggfortify的autoplot,指定分组变量实现着色,并添加置信椭圆:

library(ggfortify)
expression.pca.plot <- autoplot(expression.pca,
                                data = expr_df,
                                colour = 'Group',  # 按Group列着色
                                shape = 'Group',   # 可选:按Group设置点形状
                                size = 3,          # 调整点大小
                                frame = TRUE,      # 添加分组椭圆
                                frame.type = 'norm')  # 椭圆类型:正态分布置信椭圆

# 显示图形
print(expression.pca.plot)

自定义优化(可选)

如果需要自定义颜色或主题,可以添加以下代码:

expression.pca.plot + 
  scale_color_manual(values = c('O' = 'blue', 'FO' = 'green', 'F' = 'red')) +
  theme_bw()  # 切换为简洁白底主题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:43:10