求助:按条件分组的重复样本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
相关产品推荐
相关产品推荐

