文章发表:ggtreeExtra -- MBE
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
)来了。