查看原文
其他

文章发表:ggtreeExtra -- MBE

Y叔叔 YuLabSMU 2022-09-20

ggtreeExtra这个包之前有介绍过:《用图层叠加方法绘制环形进化树

可以说这是我在2018年发表在MBE的延续,《文章发表:两种方法在进化树上可视化数据》,其中第二种方法,也就是facet_plot或者是后面可以用+号的geom_facet,这个可以说也是个骚操作,分面大家都以为是拿来用同一种方法可视化同一个数据的不同子集。而我却用来用不同方法可视化不同数据,突破了大家的想象力。更重要的是模块化的设计,让它背后拥有了整个世界,没错是整个世界,画树交给ggtree,已经没有对手,画数据交给ggplot2整个社区,没错是整个社区,因为各种扩展包,都能为我所用(当然有些包不兼容也是存在的),所以也不可能有对手,这一结合,就更加不可能有对手。

然而有一个问题,是利用了分面,也就意味着没办法用极坐标,限制了在circular布局上的应用。我最初写了一个gheatmap的函数,算作是个prototype吧,用来画树+热图,在函数内部对数据做了操作,让它可以画在树的右侧,变成极坐标,就成了画在外圈。

我对学生说,我想要写一个通用的,可以参考gheatmap,我要的是和geom_facet一样的接口,一样的用户体验。最终学生做出来的,在我意料之外,我本以为会按照gheatmap一样,在函数里对数据进行位移,结果学生开发出来的是通过定义Position对象,传给图层做位移,给我留下了非常好的印象。能够主动思考,做出让导师觉得impressive的成果,此处必须手动点赞!

所以ggtreeExtra可以看做是我在2018MBE文章中第二方法的一个更好实现版本,它同样拥有整个世界,ggtree和整个ggplot2社区,而且支持更多的树布局。

文章最终发表在Molecular Biology and Evolution上,文章写得比较短,但我们写了很长的附件,足足有30页,用各种例子告诉大家,这个包多么好用,且没有对手。https://github.com/YuLab-SMU/plotting-tree-with-data-using-ggtreeExtra

与其它软件的比较,我们带来了更多的可能性。下面是几张我们在示例中画的图,看看就知道大概有多厉害。


简单一点的:


搞个统计图,搞个图片啥的,都不是问题:

复杂的图一点都不复杂,因为都是搭积木出来的,每一层都是简单得不得了。


前方高能,美图秀秀:

最后这个图,是我们的得意之作,我一定要学生找到个真实的数据来画。因为既然要画圈,就得能结合弦图,最后的呈现效果,还是比较满意的。


最后来一句广告词:忘了iTOL吧,ggtreeExtra拉着嫁妆(ggplot2社区)赶着马车(ggtree)来了。

看完你还想看

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

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