美文网首页
ggtree:一款强大的R语言绘制生物进化树工具

ggtree:一款强大的R语言绘制生物进化树工具

作者: Bioinfor生信云 | 来源:发表于2024-06-03 17:00 被阅读0次

在生物信息学和进化生物学领域,树状图(phylogenetic trees)是用来表示物种之间进化关系的重要工具。ggtree是一个基于ggplot2的R包,专门用于可视化进化树,支持多种树状图的格式,如Newick、Nexus、PhyloXML等,它不仅能绘制基础的进化树,还能结合数据在树上进行注释和高级自定义,是进化分析中不可或缺的工具之一。

安装ggtree

要安装ggtree,你需要先确保已经安装了R和Bioconductor。ggtree作为Bioconductor的一部分,可以通过以下命令安装:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("ggtree")

ggtree使用示例

接下来,我们将通过几个不同的例子来展示ggtree的强大功能。

示例1:基础进化树绘制

首先,我们需要一个进化树的数据。这里,我们使用ggtree自带的一个示例数据集。

library(ggtree)
tree <- rtree(10) # 生成一个包含10个物种的随机进化树
ggtree(tree) + geom_tiplab() # 绘制进化树,并在末端添加物种标签

[图片上传中...(image.png-1a95f8-1712712160088-0)]

这段代码会生成一个基础的进化树,每个物种在树的末端都有标签。


示例2:进化树上添加注释

ggtree支持在进化树上添加多种注释,比如高亮某些分支、添加图形标记等。

ggtree(tree) +
  geom_tiplab() +
  geom_highlight(node=5, fill="lightblue") + # 高亮显示编号为5的节点
  geom_nodelab(aes(label=node), nudge_x=0.5) # 在节点旁添加节点编号

这段代码在基础进化树的基础上,高亮了编号为5的节点,并在每个节点旁边添加了节点编号。


示例3:绘制圈状图

library("ggplot2")
library("ggtree")
library("colorspace")
treFile="input.tre"           #进化树文件
groupFile="group.txt"         #树枝分类
outFile="tree.pdf"            #输出

#读取属性文件,把属性信息保存到list
cls=list()
rt=read.table(groupFile,sep="\t",header=T)
for(i in 1:nrow(rt)){
    otu=as.character(rt[i,1])
    phylum=as.character(rt[i,2])
    cls[[phylum]]=c(cls[[phylum]], otu)
}
phylumNames=names(cls)
phylumNum=length(phylumNames)

#读取进化树文件,和属性文件合并
tree=read.tree(treFile)
tree=groupOTU(tree, cls)

#绘制
pdf(file=outFile, width=8, height=8)
ggtree(tree, 
       layout="circular", 
       ladderize = F, 
       branch.length="none", 
       aes(color=group)) + 
       scale_color_manual(values=c(rainbow_hcl(phylumNum+1)),breaks=phylumNames, labels=phylumNames ) + 
       theme(legend.position="right") + 
       geom_text(aes(label=paste("                ",label,sep=""), 
       angle=angle+45), 
       size=2)
dev.off()

  1. 加载所需的包:ggplot2、ggtree和colorspace。

  2. 定义变量:

    • treFile:进化树文件的路径。
    • groupFile:树枝分类的属性文件路径。
    • outFile:输出文件的路径。
  3. 读取属性文件,并将属性信息保存到cls列表中。

    • cls:一个列表,以属性值(例如“phylum”)作为键,对应的样本编号列表作为值。
  4. 读取进化树文件,并根据属性文件合并属性信息到树中。

    • tree:从进化树文件中读取的进化树对象。
    • groupOTU:自定义函数,用于将属性信息合并到进化树中的叶节点(OTU)。
  5. 绘制进化树:

    • 使用ggtree函数绘制树,设置布局为圆形(layout="circular")。
    • ladderize = F:不对树进行阶梯化处理。
    • branch.length="none":不显示分支长度。
    • 使用aes(color=group)对树的分支进行着色,着色的属性为group
  6. 设置颜色:

    • 使用scale_color_manual手动设置颜色映射,使用rainbow_hcl函数生成不同类别的颜色,类别数为phylumNum+1(属性值的数量加一,为了保证颜色不重复)。
    • breaks=phylumNames, labels=phylumNames:设置颜色映射的标签,即属性值的名称。
  7. 设置图例位置为右侧(theme(legend.position="right"))。

  8. 使用geom_text添加文本标签,标签内容为label,并根据angle+45设置标签的角度偏移,size=2设置标签的大小。

  9. 最后,将绘制的图保存为PDF文件(pdf(file=outFile, width=8, height=8)),并关闭绘图设备(dev.off())。

相关文章

  • 2019-04-16

    简单的利用R语言绘制进化树(模仿笔记) 必备软件:treeio,ggtree。需要首先安装Bioconductor...

  • ggtree绘制基础版进化树

    ggtree是Y叔来发的用于分析进化关系很强大的R包,用ggtree可以轻轻松松绘制一棵优雅的进化树,高配版进化树...

  • R语言的ggtree展示进化树的一些常用操作

    ggtree是R语言里对进化树进行可视化展示的一个功能非常强大的R包,ggtree的作者还专门写了一本书对ggtr...

  • R语言:ggtree绘制进化树(二)

    导读 上一篇:R语言ggtree绘制进化树(一)上一篇相关:Phylophlan(二)种间进化分析tree文件和绘...

  • 【R语言】ggtree绘制进化树

    绘制进化树的方法有很多,入门的MEGA。美化比较好用的,也是我经常用的工具如iTOL,evolview等。 今天测...

  • R语言:ggtree绘制进化树(一)

    导读 ggtree由R语言大神Y叔纸笔,于2018年发表在Molecular Biology and Evolut...

  • ggtree笔记

    进化树的可视化软件非常多,其中R包 ggtree 功能非常强大,非常灵活,简单记录自己的学习笔记 第一步:使用 m...

  • ggtree绘制进化树

    绘制进化树的方法有很多,入门的MEGA,iTOL,evolview等,但是没有一个如ggtree这般高效简单,轻轻...

  • ggtree绘制进化树

    文件说明:tree.tre : 进化树文件 group.info : 分组信息

  • 使用iTOL美化进化树

    小编之前写过一篇使用“ggtree" 快速美化进化树的文章(使用ggtree对进化树进行分组美化 - 简书),但是...

网友评论

      本文标题:ggtree:一款强大的R语言绘制生物进化树工具

      本文链接:https://www.haomeiwen.com/subject/bgnxxjtx.html