取子集对于进化树可视化来说是非常常见的,我们要区分内部节点和外部节点,我们也可能想针对某些特点的节点进行注释。

ggplot2现在所有图层都不支持直接取子集,所以呢ggtree就自己定义了一些修改的图层,包括geom_text2, geom_label2, geom_point2geom_segment2,这些图层和ggplot2的版本唯一差别就是支持取子集。这样对于我们做注释来说,就更方便了。

比如说我想给内部节点打点,可以用:

ggtree(tree) + geom_text2(aes(label=label, subset=!isTip), hjust=-.2) +
        geom_point2(aes(subset=!isTip), color="red", size=3)

Continue reading

据说1024是程序员的节日,就在这一天,Y叔开始了第一次的网络讲座,首次在网络上露面。内容就是上一周预告的《线上沙龙》。

很多人想要学ggplot2 + ggtree,但我的定位不是技术性的培训,而是学术讲座,所以一开始把问题摆出来,是有一些问题存在,有knowledge gap,然后我要去解决它。当然考虑到听众的knowledge gap也很大,我在介绍ggtree的之前,也帮大众撸了一篇R的画图,在这简短的时间里,你应该了解了R几个画图系统的关系,base和grid我在slides里写graphic system,但lattice和ggplot2我写的是data visualization system,我对它们是有区别对待的,像lattice和ggplot2自己是不成一体的,但提供了高阶的数据可视化方法/语法。听完讲座你也应该了解ggplot2,知道要怎样去入门,知道重点该学什么。

Continue reading

最初github上用户(@JustGitting)报告说geom_hilightgeom_cladelabel不能用于unrooted树。详见:https://github.com/GuangchuangYu/ggtree/issues/118

我表示这确实是不行的,然后这就变成了feature request。我继续表示unrooted tree在ggtree中的实现并不好,我只实现了equal angle algorithm,在写注释图层之前,如果我有时间的话,我希望可以先实现更好的layout algorithm。

然后JustGitting表示,他发现python的ETE和R的ape,在无根树的可视化上好像都不太行。问我有什么unrooted的layout algorithm,有没有什么参考文献,或许他可以帮忙实现,因为他觉得ggtree是最成熟的软件。

Continue reading

还记得《ggtree hex sticker》一文吧?画了几个六角贴,纯代码生成。时隔半年,原来的ggtree已经分成了treeioggtree两个包,而我也做了这两个包的六角贴,终于我花了289美元印了一大波贴纸+磁贴。

Continue reading

With ggtree (Yu et al. 2017), it is very easy to create phylomoji. Emoji is internally supported by ggtree.

Use emoji in taxa labels

library(ggtree)
tree_text <- "(((((cow, (whale, dolphin)), (pig2, boar)), camel), fish), seedling);"
x <- read.tree(text=tree_text)
ggtree(x, linetype="dashed", color='firebrick') +
    xlim(NA, 7) + ylim(NA, 8.5) +
    geom_tiplab(aes(color=label), parse='emoji', size=14, vjust=0.25) +
    labs(title="phylomoji", caption="powered by ggtree + emojifont")

Continue reading

想要分段标记bootstrap,比如0-70, 70-90, 90-100之类的。这个对于ggtree来说,太简单。

首先我们要读树,用treeioread.newick,它和read.tree的不同之处是,加入了参数node.label,当node.label存的不是label,而是bootstrap等数字型的时候,你可以传入node.label='support',这样它会把node label解析为support value,另存为树注释数据,而不是和tip label混在一起。label变量只能存为字符型,因为和tip label混了,而字符型会让数字操作稍微复杂点。所以我们要用read.newick

tree <- read.newick("RMI.phy_phyml_tree_rooted_labeled.txt", node.label='support')
root <- getRoot(tree@phylo)

p <- ggtree(tree, color="black", size=1.5, linetype=1,  ladderize=TRUE) + 
     ggtitle(label="Figure A") + 
    geom_tiplab(size=4.5, hjust = -0.060, fontface="bold") +  xlim(0, 0.09)

Continue reading

Author's picture

Guangchuang Yu

Bioinformatics Professor @ SMU

Bioinformatics Professor

Guangzhou