a6_phyloseq进化树可视化学习

wentao

2019年5月16日

phyloseq使用plot_tree函数可视化进化树

使用数据

library("phyloseq")
data("esophagus")
data("GlobalPatterns")

为求可重复,此处显示版本号

packageVersion("phyloseq")## [1] '1.26.1'library("ggplot2"); packageVersion("ggplot2")## [1] '3.1.0'

本数据集数的节点标签很奇怪,是数字

这里将标签更改为使用前四个字符

head(phy_tree(GlobalPatterns)$node.label, 10)## [1] "" "0.858.4" "1.000.154" "0.764.3" "0.995.2"
## [6] "1.000.2" "0.943.7" "0.971.6" "0.766" "0.611"
#
phy_tree(GlobalPatterns)$node.label = substr(phy_tree(GlobalPatterns)$node.label, 1, 4)

很多otu 因此我们过滤otu,这里随便取五十个

ntaxa(GlobalPatterns)## [1] 19216physeq = prune_taxa(taxa_names(GlobalPatterns)[1:50], GlobalPatterns)

phyloseq使用的是ggplot包做的tree

我本来以为是geom_tree,但是阅读源码之后才发现是segment。 这里使用tree_layout将tree转化为segment对象,并且按照横线和竖线两种类型组装成进化树

treeSegs <- tree_layout(phy_tree(physeq), ladderize = FALSE)#这是构建进化树的基础构建segment对象

head(treeSegs)## $edgeDT
## V1 V2 edge.length OTU xleft xright y x label
## 1: 53 1 0.00892 549322 0.14065 0.14957 1.000000 NA <NA>
## 2: 53 2 0.01408 522457 0.14065 0.15473 2.000000 NA <NA>
## 3: 52 3 0.16022 951 0.01869 0.17891 3.000000 NA <NA>
## 4: 55 4 0.08976 244423 0.09714 0.18690 4.000000 NA <NA>
## 5: 56 5 0.04868 586076 0.11496 0.16364 5.000000 NA <NA>
## 6: 57 6 0.05042 246140 0.12684 0.17726 6.000000 NA <NA>
## 7: 59 7 0.01921 143239 0.20325 0.22246 7.000000 NA <NA>
## 8: 59 8 0.01184 244960 0.20325 0.21509 8.000000 NA <NA>
## 9: 60 9 0.03307 255340 0.19195 0.22502 9.000000 NA <NA>
## 10: 61 10 0.01909 144887 0.21684 0.23593 10.000000 NA <NA>
## 11: 61 11 0.02494 141782 0.21684 0.24178 11.000000 NA <NA>

edgeMap = aes(x = xleft, xend = xright, y = y, yend = y)
vertMap = aes(x = x, xend = x, y = vmin, yend = vmax)
p = ggplot(data = treeSegs$edgeDT) + #geom_segment(edgeMap) +
geom_segment(vertMap, data = treeSegs$vertDT)
p

p = ggplot(data = treeSegs$edgeDT) + geom_segment(edgeMap)
p

p = ggplot(data = treeSegs$edgeDT) + geom_segment(edgeMap) +
geom_segment(vertMap, data = treeSegs$vertDT)
p

### 然后将修改主题,几乎将所有线都去掉treetheme <- theme(axis.ticks = element_blank(), axis.title.x = element_blank(),
axis.text.x = element_blank(), axis.title.y = element_blank(),
axis.text.y = element_blank(), panel.background = element_blank(),
panel.grid.minor = element_blank(), panel.grid.major = element_blank())
p + treetheme

ggplot绘制进化树geom_tree,ggrree更加快捷方便并完善绘制进化树

library("phyloseq")
library("ggtree")
tree <- phy_tree(physeq)

ggplot(tree, aes(x, y)) + geom_tree() + theme_tree()

ggtree(tree, color="firebrick", size=1, linetype="dotted")

ggtree(tree, ladderize=FALSE)

默认可视化

这里的黑点表示OTU在样品的含量

plot_tree(physeq)

去除黑点

plot_tree(physeq, "treeonly")

### 去除节点标签plot_tree(physeq, "treeonly", nodeplotblank)

### 选择树枝排布方案plot_tree(physeq, "treeonly", nodeplotblank, ladderize="left")

plot_tree(physeq, "treeonly", nodeplotblank, ladderize=TRUE)

添加OTU名称为节点名称

plot_tree(physeq, nodelabf=nodeplotblank, label.tips="taxa_names", ladderize="left")

添加进化分支数字

BOOTSTRAP值即自展值,可用来检验所计算的进化树分支可信度。Bootstrap几乎是构建系统进化树一个必须的选项。一般Bootstrap的值>70%,则认为构建的进化树较为可靠。如果Bootstrap的值太低,则有可能进化树的拓扑结构有错误,进化树是不可靠的。

plot_tree(physeq, "anythingelse")

### 使用颜色将黑点区分开样品plot_tree(physeq, nodelabf=nodeplotboot(), ladderize="left", color="SampleType")

按照注释对节点进行上色

plot_tree(physeq, nodelabf=nodeplotboot(), ladderize="left", color="Class")

### 形状代表OTU不同注释 颜色代表不同样品 nodelabf=nodeplotboot()参数去除支节点标签 关于支节点标签设置使用参数nodelabf,有三个选项 nodeplotdefault(全部添加),nodeplotboot(设置范围部分添加),nodeplotblank(不添加)plot_tree(physeq, nodelabf=nodeplotboot(), ladderize="left", color="SampleType", shape="Class")

### 两种策略处理进化树分支置信度# The default
plot_tree(physeq, color="SampleType", ladderize="left")

### Special bootstrap label# Special bootstrap label
plot_tree(physeq, nodelabf=nodeplotboot(), color="SampleType", ladderize="left")

设定范围

# Special bootstrap label with alternative thresholds
plot_tree(physeq, nodelabf=nodeplotboot(80,0,3), color="SampleType", ladderize="left")

### 叶节点标签plot_tree(physeq, nodelabf=nodeplotboot(80,0,3), color="SampleType", label.tips="taxa_names", ladderize="left")

### 更改展示类型data(esophagus)
plot_tree(esophagus, color="Sample", ladderize="left") + coord_polar(theta="y")

### 同时对叶节点的颜色和形状属性进行设置plot_tree(physeq, nodelabf=nodeplotboot(60,60,3), color="SampleType", shape="Class", ladderize="left") + coord_polar(theta="y")

### 设置题目plot_tree(esophagus, title="Default tree.")

### 设置展示methodplot_tree(esophagus, "treeonly", title="method = \"treeonly\"")

按照丰度设置叶节点大小

plot_tree(esophagus, size="abundance")

同时设置按照样品填充叶节点颜色

plot_tree(esophagus, size="abundance", color="samples")

### 控制叶节点整体大小plot_tree(esophagus, size="abundance", color="samples", base.spacing=0.01)

将丰度信息加到叶节点内

plot_tree(esophagus, size="abundance", color="samples", base.spacing=0.03, min.abundance=3)

(0)

相关推荐

  • ggdag:DAG和因果图

    近几年来,因果推断同时受到多个学科的重视,是最火热的研究方向之一.因果图(或称路径图)是研究因果关系的一个有效的辅助性工具.借助因果图可以分析因果关系,将复杂问题图形化.本文介绍一个用来绘制因果图的R ...

  • 【原创教程】houdini17 三角函数可视化学习

    --  微资讯 · 微课程  -- 利用零碎时间,走上超神之路! 教程编号 CGhunter_houdini_04_001_010_trigintro (vex卷第一章第10小节内容) 教程导读   ...

  • 我写了一个简单的进化树可视化/注释工具

    我原本是想给这个工具取个名字叫做Amazing TreeViewer,但我还是无法下定决心,所以他现在叫做TreeTreeTree.翻译成中文,树蜀黍. 写在前面 在很久很久之前,我提到了,在下一篇文 ...

  • 基于可视化学习分析的研究性学习学生画像构建研究*

    余明华,张 治,祝智庭 * 本文系全国教育科学"十三五"规划2019年度国家一般课题"基于学生画像的综合素质评价行动研究"(课题编号:BCA190084)研究成 ...

  • 学习数据可视化,读哪本书比较好?

    入门数据可视化的小伙伴往往都会问这样一个问题:我应该从哪里开始学起,有什么书推荐吗? 这个问题之所以普遍,是因为数据可视化是一个相当交叉的学科,既涉及数据分析,也涉及设计和编程.而这三大方向之中,每一 ...

  • 借助 68 段动画以可视化方式来学习高等数学,掌握微积分

    相信很多朋友一听到"微积分".'高等数学'就头大, 因为高数书中有那么多公式和定理, 好枯燥啊! 其实我们在记忆这些概念之前, 如何能够透彻理解公式背后的意义就非常重要! 那些冷冰 ...

  • 10个学习数据可视化的网站

    10个学习数据可视化的网站

  • 【WPF学习】第六十六章 支持可视化状态

    上一章介绍的ColorPicker控件,是控件设计的最好示例.因为其行为和可视化外观是精心分离的,所以其他设计人员可开发动态改变其外观的新模板. ColorPicker控件如此简单的一个原因是不涉及状 ...

  • 从零开始学习3D可视化之获取对象

    一.query()查询物体 二. 其他查询方法 在数字孪生可视化场景中,添加完对象之后,我们如何尽快查找到对象呢?ThingJS中获取对象有如下几个方法:通过父子属性获取对象:通过分类属性获取对象:使 ...

  • 网络首发|基于深度学习与特征可视化方法的草地贪夜蛾及其近缘种成虫识别

    草地贪夜蛾入侵我国后,对我国的粮食生产安全产生了巨大威胁.人工智能技术作为辅助手段,可以为草贪的监测赋能,但深度学习技术在图像分类领域黑盒化的工作模式让识别模型的可解释性和可靠性都打上了一个问号. 作 ...