原标题:如何绘制精美的PCoA图形?

今天我们来分享干货——PCoA图形的代码。继PCA、火山图、热图等代码后,基迪奥的程序猿又整理出PCoA代码。具体往期我们分享过的代码贴,可以在文末查看哦。

什么是PCoA?

微生物群落结构受多种因素影响,例如光照、温度、人群性别、年龄等。要了解目的分组是否与某种因素存在联系,我们常常会用到PCA、PCoA等排序方法。

PCoA能够将样本之间的相似性距离(虚拟距离),经过投影后,在低维度空间进行欧几里德距离展示,以最大限度地保留原始样本的距离关系,使相似的样本在图形中的距离更为接近,相异的样本距离更远(图1)。因此相比于PCA,PCoA以样本距离为整体考虑,更符合生态学数据特征,应用也更为广泛。

图1. PCoA原理

如何作图?

虽然一般的16S或者宏基因组等分析流程当中都会包含PCoA分析,但如果自己想要更改分组的形状,或者挑选特定的OTU进行分析,那么自己进行操作会高效很多。

PCoA的作图主要分为三个步骤:

选择特定的相似性距离并计算距离矩阵。距离的选择可以有Bray-curits、Unifrac等,不同的距离有不同的作用和意义(具体可以参考 微生物β多样性常用计算方法比较)。相似性距离可以利用R的GUniFrac和vegan等包计算,也可以利用QIIME计算。

进行PCoA分析,也就是利用表征分析选择最能表示样本距离的坐标轴。这个可以利用R的ape包的pcoa()命令完成。

PCoA图形展示。图形可以用ordiplot()命令展示,但如果需要比较美观的图形,建议用ggplot来画。

下面我们以R为基础,展示如何根据Unweighted Unifrac距离来画PCoA图:

----------------------代码开始了-----------------------

###导入需要的R包

library(GUniFrac) #用于计算Unifrac距离

library(ape) # 用于pcoa分析

library(ggplot2) #用于画图

##读文件

Otu_tab

Tree

Otu_tab

Otu_tab_rff

unifracs

du

Group

shape

color

PCOA

result

pro1 = as.numeric(sprintf("%.3f",result[1]))*100

pro2 = as.numeric(sprintf("%.3f",result[2]))*100

x = PCOA$vectors

sample_names = rownames(x)

pc = as.data.frame(PCOA$vectors)

pc$names = sample_names

legend_title = ""

group = Group

pc$group = group

xlab=paste("PCOA1(",pro1,"%)",sep="")

ylab=paste("PCOA2(",pro2,"%)",sep="")

pca=ggplot(pc,aes(Axis.1,Axis.2)) + #用ggplot作图

geom_point(size=3,aes(color=group,shape=group)) +

# geom_text(aes(label=names),size=4,vjust=-1) +

labs(x=xlab,y=ylab,title="PCOA",color=legend_title,shape=legend_title) +

geom_hline(yintercept=0,linetype=4,color="grey") +

geom_vline(xintercept=0,linetype=4,color="grey") +

scale_shape_manual(values=shape) +

scale_color_manual(values=color) +

theme_bw()

-------------------------代码结束------------------------

结果图展示:

输入OTU表格之后,运行上面代码,就可以出来图形(当然结果的数据输入是经过一定修改,自己根据需求定义样本数目,点的形状和颜色就可以)。

图2. PCoA结果展示

好了,今天分享的内容就到这里啦。想查看往期代码贴的朋友可以直接戳下面的题目:

责任编辑:

r语言绘制精美pcoa图_如何绘制精美的PCoA图形?相关推荐

  1. r语言做绘制精美pcoa图_如何绘制精美的PCoA图形

    匿名用户 1级 2017-06-20 回答 虽然一般的16S或者宏基因组等分析e69da5e6ba90e799bee5baa6e79fa5e9819331333363373762流程当中都会包含PCo ...

  2. R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示

    为什么要用桑基图 桑基图 (Sankey diagram)是一种展现数据之间流动和相互关系的图像,类似于一种网络图,通过不同层级节点之间的连接以及连接边的宽度,展示数据之间的流动关系. 在微生物群落分 ...

  3. R语言多层桑基图_绘制炫酷桑基图,R语言(networkD3包)能搞定?

    你知道如何使用R语言绘制桑基图吗? 小锐当然知道啦,并且教你 绘制酷炫的桑基图. 开课啦 桑基图(Sankey)是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,其最明显的特征就是,始末 ...

  4. R语言多层桑基图_流量结构分布图——桑基图(Sankey)

    桑基图作为相对复杂的图表种类,平时很少用到,不仅仅是因为它的引用场景相对狭窄,另一方面则是制作难度相对较大,门槛较高. 不过针对第一个问题,如果你能很好地理解自己所涉及到的业务数据结构及想要表达和呈现 ...

  5. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置数据点抖动显示jitter)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(配置 ...

  6. R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩、离散色彩、梯度色彩)实战(density plot)

    R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩.离散色彩.梯度色彩)实战(density plot) 目录 R语言使用ggplot2包使用geom_density( ...

  7. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色自定义配置)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色自定义配置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框 ...

  8. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(添加均值点)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(添加均值点)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(添加均值点)实战

  9. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置、色彩设置)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(主题模式配置.色彩设置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜 ...

最新文章

  1. 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
  2. 项目实践中的一些性能优化指南
  3. html怎么查看cad文件,如何直接查看CAD格式的图纸
  4. iOS开发之--Masonry多个平均布局
  5. Unity之Update与FixedUpdate区别
  6. SharePoint 学习笔记(一)
  7. 用python画烟花-用python做一个烟花show
  8. android token过期怎么跳转登录_用sa-token轻松解决网站权限验证
  9. 来看看,他的嵌入式之旅!
  10. 文件 图片 上传 及少许正则校验
  11. 单片机 c语言 定义i o,【51单片机】普通I/O口模拟SPI口C语言程序
  12. 由摄像机外参矩阵求解像片的外方位线元素
  13. android textview doubleclick,Android的TextView的双击事件监听
  14. 使用Context和Hooks来管理状态
  15. hibernate 状态间转换及update,saveOrUpdte
  16. 深入解析WINDOWS操作系统
  17. 安卓游戏源码源代码下载
  18. 1072: 青蛙爬井
  19. vtk体绘制代码报错的解决办法(代码在vtk7,8,9中都能运行),以及VTK数据集网站
  20. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)

热门文章

  1. 跳车开发者Pokkst自述——从BTC到BCH
  2. 基于比特币现金BCH二层网络能实现区块链2.0以太坊的智能化吗
  3. 比特币现金vs莱特币,谁将夺得小额支付市场?
  4. 《linux c编程指南》学习手记5
  5. 为什么 Django 能持续统治 Python 开发世界
  6. 《为了你我愿意热爱整个世界》
  7. javascript之变量,作用域和内存问题
  8. 弄了个调试呼叫中心用的小机器
  9. mysql四-2:多表查询
  10. Java程序员需要熟悉的库