ggbiplot简介

ggbiplot是一款PCA分析结果可视化的R包工具,可以直接采用ggplot2来可视化R中基础函数prcomp() PCA分析的结果,并可以按分组着色 、分组添加不同大小椭圆、主成分与原始变量相关与贡献度向量等。

An implementation of the biplot using ggplot2. The package provides two functions: ggscreeplot() and ggbiplot()ggbiplot aims to be a drop-in replacement for the built-in R function biplot.princomp() with extended functionality for labeling groups, drawing a correlation circle, and adding Normal probability ellipsoids.

ggbiplot安装和官方示例

R包,建议在Rstudio中使用更方便

# 安装包,安装过请跳过
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')# 基本样式
plot(wine.pca$x) # 原始图,大家可以尝试画下,不忍直视

看,是不是一条命令就把prcomp()得到的主成分分析PCA的结果展示的淋漓尽致。是不是瞬间有了高分文章的B格。

主要结果说明:

  • 坐标轴PC1/2的数值为总体差异的解释率;

  • 图中点代表样品,颜色代表分组,图例在顶部有三组;

  • 椭圆代表分组按默认68%的置信区间加的核心区域,便于观察组间是否分开;

  • 箭头代表原始变量,其中方向代表原始变量与主成分的相关性,长度代表原始数据对主成分的贡献度。

更详细的PCA原理、推导、图解,请跳转《一文看懂PCA主成分分析》,再点击阅读原文。重点关注——PCA结果解释部分。

OTU表实战

本实战,基于本公众号之前发布文章 《扩增子分析教程-3统计绘图-冲击高分文章》中提供测试数据的OTU表、实验设计和物种注释信息,需要者可前往下载。

PCA分析OTU表和可视化

# 菌群数据实战
# 读入实验设计
design = read.table("design.txt", header=T, row.names= 1, sep="\t") # 读取OTU表
otu_table = read.delim("otu_table.txt", row.names= 1,  header=T, sep="\t")# 过滤数据并排序
idx = rownames(design) %in% colnames(otu_table)
sub_design = design[idx,]
count = otu_table[, rownames(sub_design)]# 基于OTU表PCA分析
otu.pca <- prcomp(t(count), scale. = TRUE)# 绘制PCA图,并按组添加椭圆
ggbiplot(otu.pca, obs.scale = 1, var.scale = 1,groups = sub_design$genotype, ellipse = TRUE,var.axes = F)

可以看到三个组在第一主轴上明显分开。

展示主要差异菌与主成分的关系

# 显著高丰度菌的影响# 转换原始数据为百分比
norm = t(t(count)/colSums(count,na=T)) * 100 # normalization to total 100# 筛选mad值大于0.5的OTU
mad.5 = norm[apply(norm,1,mad)>0.5,]
# 另一种方法:按mad值排序取前6波动最大的OTUs
mad.5 = head(norm[order(apply(norm,1,mad), decreasing=T),],n=6)
# 计算PCA和菌与菌轴的相关性
otu.pca <- prcomp(t(mad.5))
ggbiplot(otu.pca, obs.scale = 1, var.scale = 1,groups = sub_design$genotype, ellipse = TRUE,var.axes = T)

我们仅用中值绝对偏差(mad)最大的6个OTUs进行主成分分析,即可将三组样品明显分开。图中向量长短代表差异贡献,方向为与主成分的相关性。可以看到最长的向量Streptophyta与X轴近平行,表示PC1的差异主要由此菌贡献。其它菌与其方向相反代表OTUs间可能负相关;夹角小于90%的代表两个OTUs有正相关。

ggbiplot官网简介

ggbiplot

An implementation of the biplot using ggplot2. The package provides two functions: ggscreeplot() and ggbiplot()ggbiplot aims to be a drop-in replacement for the built-in R function biplot.princomp() with extended functionality for labeling groups, drawing a correlation circle, and adding Normal probability ellipsoids.

ggbiplot使用和参数

?ggbiplotggbiplot(pcobj, choices = 1:2, scale = 1, pc.biplot =TRUE, obs.scale = 1 - scale, var.scale = scale, groups =NULL, ellipse = FALSE, ellipse.prob = 0.68, labels =NULL, labels.size = 3, alpha = 1, var.axes = TRUE, circle= FALSE, circle.prob = 0.69, varname.size = 3,varname.adjust = 1.5, varname.abbrev = FALSE, ...)pcobj # prcomp()或princomp()返回结果
choices    # 选择轴,默认1:2
scale    # covariance biplot (scale = 1), form biplot (scale = 0). When scale = 1, the inner product between the variables approximates the covariance and the distance between the points approximates the Mahalanobis distance.
obs.scale # 标准化观测值
var.scale # 标准化变异
pc.biplot # 兼容 biplot.princomp()
groups # 组信息,并按组上色
ellipse    # 添加组椭圆
ellipse.prob # 置信区间
labels    # 向量名称
labels.size    # 名称大小
alpha # 点透明度 (0 = TRUEransparent, 1 = opaque)
circle # 绘制相关环(only applies when prcomp was called with scale = TRUE and when var.scale = 1)
var.axes # 绘制变量线-菌相关
varname.size # 变量名大小
varname.adjust # 标签与箭头距离 >= 1 means farther from the arrow
varname.abbrev # 标签是否缩写

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外2600+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

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

  1. ggbiplot-最好看的PCA作图:样品PCA散点+分组椭圆+主成分丰度和相关

    写在前面 https://github.com/vqv/ggbiplot/blob/master/README.md 前几天在<宏基因组0>微信讨论群看到了有人发了一个上面链接,点开一看居 ...

  2. 主成分分析(Principle Component Analysis)PCA的核心思想是什么?PCA算法的优缺点?增量PCA模型, 随机PCA, 模型、 核化PCA分别是什么?使用时如何选择?

    主成分分析(Principle Component Analysis)PCA的核心思想是什么?增量PCA模型, 随机PCA, 模型. 核化PCA分别是什么?使用时如何选择? 主成分分析(Princip ...

  3. PCA、碎石图、PCA+正确的维度个数、增量PCA(IncrementalPCA)、随机PCA(Randomized PCA)、KernelPCA

    PCA.碎石图.PCA+正确的维度个数.增量PCA(IncrementalPCA).随机PCA(Randomized PCA).KernelPCA 目录 PCA

  4. ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA)

    ML之DR之PCA:利用PCA对手写数字图片识别数据集进行降维处理(理解PCA) 目录 初步理解PCA 输出结果 核心代码 初步理解PCA #理解PCA:线性相关矩阵秩计算样例 import nump ...

  5. MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并《测试集辛烷值含量预测结果对比》

    MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并<测试集辛烷值含量预测结果对比> 目录 输出结果 实现代码 输出结果 后期更新-- 实现代 ...

  6. UFLDL教程:Exercise:PCA in 2D PCA and Whitening

    相关文章 PCA的原理及MATLAB实现 UFLDL教程:Exercise:PCA in 2D & PCA and Whitening python-A comparison of vario ...

  7. 【火炉炼AI】机器学习053-数据降维绝招-PCA和核PCA

    [火炉炼AI]机器学习053-数据降维绝招-PCA和核PCA (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplo ...

  8. PCA主成分分析(PCA降维)

    PCA主成分分析 PCA任务介绍 公式推导 算法实现 降维是对数据高维度特征的一种预处理方法. 降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的.在实 ...

  9. 机器学习 -- PCA(Ⅵ 使用PCA降噪)

    回顾之前的案例: 数据集展现出如上结果,可是有没有可能数据集本身就是一条直线.换句话说,这个数据集展现的是在一根直线上下进行抖动式的分布,实际上这种抖动和这根直线本身的距离是噪音.这个噪音的产生原因可 ...

最新文章

  1. Python中通过lambda抛异常的奇技淫巧
  2. JSP内置对象—session
  3. caffe data层_Caffe 学习:Eltwise层
  4. PhotoFiltre Studio X中文版
  5. 大盘点|卷积神经网络必读的 100 篇经典论文,包含检测 / 识别 / 分类 / 分割多个领域
  6. 解决链接模型的可见性问题
  7. cesium绘制网格_Cesium学习笔记-工具篇37-风场绘制
  8. 查看函数库.a函数符号信息
  9. Codeforces Round #361(div 2)
  10. SaaS 正在 Rails 化
  11. 东方乐器及音乐、音乐的常识
  12. My97DatePickerBeta日期控件乱码问题解决方案
  13. 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2022-11-22)
  14. linux内核空间和用户空间认识和区别
  15. html做战网首页,战网更新agent一半不动
  16. Nacos如何实现统一配置管理
  17. 统计学之数据的描述性统计(基础)
  18. Cannot install under Rosetta 2 in ARM default prefix|Mac问题已解决
  19. 信息系统项目管理师文件夹
  20. 专精特新企业和高新技术企业的区别及认定好处,补贴20-100万

热门文章

  1. 为什么绩效管理如此重要?有哪些数字化绩效管理工具?
  2. 推荐8个可以显著提高工作效率的办公神器
  3. java代码启动电脑上程序方法
  4. 最小树形图复杂度分析
  5. 计算机专业的第二批本科大学,我校22个专业入选第二批一流本科专业建设“双万计划”...
  6. 激光雷达和相机联合标定之开源代码和软件汇总(2004-2021)
  7. 深度隐式表达:为什么不用mesh,点云,体素等表示方法?
  8. 基于深度关键点的几何约束摄像机姿态估计
  9. 传感器融合-数据篇(自动驾驶)
  10. python version 2.7 required,which was not found