查看原文
其他

使用ggtree对进化树进行分组美化

生信小王子 生信小王子 2022-03-29

最近,小编的老师想要在一张进化树上标出不同来源的材料,平时这种“累活”小编都是使用iTOL、evolview等工具进行手动美化的,但是这次进化树里的样本足足有800多个,想要清楚、准确的标完所有的颜色,势必要耗费大量的时间,在这危急关头,小编发现了传说中Y叔写的“ggtree"!拯救小编于水火之中!

ggtree可以像ggplot2一样,用图层化的语法绘制进化树,通过不同的图层组合即可绘制出更为复杂的进化树。

首先,我们要安装好“ggtree"。

source("https://bioconductor.org/biocLite.R") biocLite("ggtree")

接着,我们需要准备好树文件和分组文件。

树文件就是我们通过Treebest、PAML、RAxML等工具获得的结果。

分组文件的格式如下:

准备好以后,我们就可以开始美化啦!

# 加载R包 library("ggtree") # 读取树文件(ggtree针对不同工具生成的树文件有不同的函数进行读取,如没有对应的函数,可以使用通用的办法读取) tree <- read.tree("file.tree") # 读取分组信息 group_file <- read.table("group_file.txt",header = T,row.names = 1) # 按类分组 groupInfo <- split(row.names(group_file), group_file$Group) # 将分组信息添加到树中 tree <- groupOTU(tree, groupInfo) # 绘制进化树 ggtree(tree, layout="fan", ladderize = FALSE, branch.length = "none",aes(color=group)) + geom_tiplab2(size=3) + theme(legend.position = "right")


美美的!分好组的进化树就画好啦!


当然,除了圆形进化树,我们还可以画各种形状的进化树,具体参数大家可以去ggtree的文档里寻找!

ggtree里还有各种函数去完成各种任务,剩下的就需要大家自己去探索啦!

另外:作者开通了知乎专栏 “小王子的生信笔记” ,欢迎大家关注!共同学习!共同进步!


参考资料:

https://www.bioconductor.org/packages/release/bioc/vignettes/ggtree/inst/doc/ggtree.html

https://guangchuangyu.github.io/cn/2016/03/ggtree-for-tree-visualization-annotation/

http://blog.sciencenet.cn/home.php?mod=space&uid=255662&do=blog&id=969228

https://shengxin.ren/article/190

http://blog.sina.com.cn/s/blog_83f77c940102vpyt.html


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存