ggfortify包autoplot绘制PCA图时仅展示setosa物种的实现方法
ggfortify PCA图仅绘制setosa样本的实现方法
注意:不要仅提取setosa的特征子集重新运行
prcomp计算PCA,单独子集算出的特征向量旋转轴和全数据集结果不一致,得到的点坐标不属于原全量分析的投影空间,结果无对照意义。
你只需要在绘图阶段过滤传入的样本数据即可,不需要修改之前的PCA计算逻辑,最简便的实现代码如下:
library(ggfortify) df <- iris[1:4] pca_res <- prcomp(df, scale. = TRUE) # 传入数据时仅保留Species为setosa的行 autoplot(pca_res, data = iris[iris$Species == "setosa", ], colour = 'Species')
如果需要让单类图的坐标轴范围和全量PCA图完全一致(方便跨图尺度对齐),可以先提取全量图的坐标范围再绘图:
# 生成全量样本的PCA图对象提取坐标范围 full_pca_plot <- autoplot(pca_res, data = iris) x_limit <- layer_scales(full_pca_plot)$x$range$range y_limit <- layer_scales(full_pca_plot)$y$range$range # 绘制setosa单类图时锁定坐标范围 autoplot(pca_res, data = iris[iris$Species == "setosa", ], colour = 'Species', xlim = x_limit, ylim = y_limit)
两种方案的适用场景:
- 直接筛数绘图:图面会自动适配setosa的点分布,布局更紧凑,适合单独观察setosa的组内分布
- 锁定坐标范围绘图:坐标轴尺度和全量PCA图完全一致,适合和全量图做对照分析
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

