全库搜索 Markdown 图册
Paper Analysis · 2 分钟阅读

ggbiplot-最好看的PCA作图:样品PCA散点+分组椭圆+变量贡献与相关

站内编号 KB-000062
clippings生信教程Bulk转录组PCAggbiplotggplot2OTU暂未试用
板块与文章导航

摘要原文证据摘要 文章介绍 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。