aplot发表
aplot包发表在The Innovation期刊上。

开发这个包的灵感来自于我在2018年发的MBE文章。

可以说这是对数据整合和可视化长期思考所得,进行高度抽象才提出这两个方法,而这两个方法,分别激发了我开发出来aplot和ggtangle两个包。
复杂图不再复杂
aplot作为一个拼图包,和大家所熟知的拼图包cowplot和patchwork是不一样的。不是把图放在一起,而是把图中的数据进行关联,就像文章图2所展示,你画几个图,无需知道数据间的关系,每个图画起来都比较简单,但是你一旦用aplot的insert_top、insert_bottom、insert_left和insert_right系列函数进行拼图,这些函数会试图去把数据给关联起来,对每个小图的内容进行重新排列,以使得图与图之间信息是对应的。最终出来底下G图这样复杂的图,如果要手搓这个图,难度很大,用aplot,很简单。

这个包的重点,就是这个功能,是我开发它的初衷。期间还有点小插曲,写个包总有人想抄代码。借此分享这段tweet给大家。

你也能创作复杂图
能够拼的图种类是比较多的:

当然你也可以自己创作一些,因为怎么拼随便你嘛。比如前面图2的单细胞marker基因表达热图,我就拼了通路富集分析结果。比如这里的A图中,oncoplot就被拿来再拼TCGA中相应基因在两个肿瘤中表达量分布。再比如E图,upsetplot我们可以用aplot拼出来,但既然是拼的,我干嘛不拼点别的呢?于是我们就搞了这个不一样的upsetplot。
说到oncoplot,是由一个学生李申锁贡献的代码,详见《ggplot2版本的oncoplot来了》,在我面前露一手,然后跟我说要申请博士,但由于我没有名额,然后也就没有然后了。虽然接触时间短,也过了比较长一段时间,但贡献我是不会忘记的。

普通的拼图
aplot另外的功能是plot_list(),就是普通的拼图的,图不会变,只是简单地组合起来放在一起。虽然patchwork包做得很好,但我是老狗学不了新把戏,早期用惯了cowplot::plot_grid,我就想来一个类似的,当然也不完全一样,我还是有我自己的一点东西在里面。
- 啥都能拼:base plot、ggplot2、图片等

-
万物皆可分面:这些拼在一起的图,只要你给个名字,就会变成像分面的label一样,在出图时呈现。
-
保持YuLab团队的五毛效果:我们开发一些包,比如说ggbreak,它所呈现的效果,你用其它的拼图工具,可能就不兼容了,但我们自己,自成一统。配合得舒舒服服的。
GA图创作

最后讲讲这张GA图,一开始画了一版,呈现4个函数的功能,我觉得(1)和图一太重复;(2)这4个函数是可以自由组合,反复使用的,这点体现不出来。所以我提了意见,用一条彩带,后面虚化,代表未完待续,还能继续调用这些函数**。**然后可以把aplot拟人化,成为舞动彩带者。至于上面拼图的元素,我的想法是哆啦A梦的口袋,后面双斌提出来说感觉口袋是aplot这个人的,换成云。一开始设计师就在云上面平铺了几个图,我觉得不行,跟设计师说,想想天兵天将要捉拿孙悟空的场景,图要堆不同的层,后面可以虚化一些,体现人多势众的感觉。就这样出来我们这张GA图。
我是第一人

aplot的灵感来自于2018年我的文章,在ggtree中孕育了好几年。然后我在2020年就开发出来并放出到CRAN上。解决我前面小标题写的复杂图不再复杂这个问题,aplot必须是第一个工具。现在有类似的工具,包括python的Marsilea和R的ggalign。第一个是最难的,因为你要产生想法,要在没有任何借鉴的情况下去实现。现在aplot的功能可能不是最全的,但aplot肯定是最容易用的,能解决你大多数的问题。