最近,小编的老师想要在一张进化树上标出不同来源的材料,平时这种“累活”小编都是使用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