摘要原文证据摘要 文章介绍
ggbiplot作为prcomp()PCA 结果的ggplot2可视化工具,可按组着色、添加分组椭圆、绘制变量相关向量和相关环,并以 OTU 表示范从样本 PCA 延伸到高变异 OTU 的贡献解释。
页面核验信息#
- 标题: ggbiplot-最好看的PCA作图:样品PCA散点+分组椭圆+变量贡献与相关
- 公众号/作者: 宏基因组 / 朱微金
- 发布时间: 2017-12-22 00:00
- 原文链接: https://mp.weixin.qq.com/s/GGCPxQEe_DXefdp-veQtag
- 上游项目: https://github.com/vqv/ggbiplot
- 浏览器核验结果: 页面包含官方示例、OTU 表实战和参数说明;核心函数为
ggbiplot()与ggscreeplot()。
原文方法摘录#
官方示例#
install.packages("devtools", repo = "http://cran.us.r-project.org")
library(devtools)
install_github("vqv/ggbiplot")
data(wine)
wine.pca <- prcomp(wine, scale. = TRUE)
ggbiplot(
wine.pca,
obs.scale = 1,
var.scale = 1,
groups = wine.class,
ellipse = TRUE,
circle = TRUE
) +
scale_color_discrete(name = "") +
theme(legend.direction = "horizontal", legend.position = "top")
原文解释:坐标轴上的 PC1/PC2 是总体差异的解释率;点代表样品;颜色代表分组;椭圆代表组内核心区域;箭头方向反映变量与主成分的相关性,长度反映变量贡献。
OTU 表实战#
原文约定实验设计表的行名与 OTU 表的样本列名对应:
design <- read.table("design.txt", header = TRUE, row.names = 1, sep = "\t")
otu_table <- read.delim("otu_table.txt", row.names = 1,
header = TRUE, sep = "\t")
idx <- rownames(design) %in% colnames(otu_table)
sub_design <- design[idx, ]
count <- otu_table[, rownames(sub_design)]
otu.pca <- prcomp(t(count), scale. = TRUE)
ggbiplot(
otu.pca,
obs.scale = 1,
var.scale = 1,
groups = sub_design$genotype,
ellipse = TRUE,
var.axes = FALSE
)
随后原文将 OTU 表按列和归一化到总和 100,按 MAD 筛选波动较大的 OTU,再把 var.axes = TRUE 用于展示变量向量。
关键参数#
| 参数 | 作用 |
|---|---|
groups |
样本分组,用于点的颜色和分组图层 |
ellipse |
是否添加分组椭圆 |
ellipse.prob |
椭圆覆盖概率;原文默认 0.68,复用脚本显式设为 0.95 |
var.axes |
是否绘制变量向量 |
circle |
是否绘制相关环,要求 PCA 使用 scale 后的变量 |
varname.adjust |
变量标签与箭头的距离 |
复用时需要修正的地方#
ggbiplot依赖 GitHub 版本,安装前应确认网络、R 版本和依赖;不能假设所有 CRAN 镜像都有该包。- 原文示例的
wine.class需要先存在;Bulk RNA-seq 中应由样本信息表提供分组向量。 - OTU 表流程中的“按列和归一化”适用于丰度表,不应机械套用到原始 RNA-seq count;RNA-seq 应先按实验设计选择 DESeq2/vst、
logCPM或其他合适变换。 - 变量向量在高维基因表达矩阵中容易拥挤,建议先按 MAD 或贡献度筛选,并在 README 中记录筛选阈值。
与综合方法页的关系#
本页保留 ggbiplot 原文证据;面向 Bulk RNA-seq 的输入检查、MAD 筛选和输出脚本见远程仓库 04_Bulk转录组/4.2_PCA/03_ggbiplot_Bulk_PCA美化.R。