尬聊系列之二 --- 近期绘图的反思与小结
写在前面
代码写累了,接下来打算看看文献,挖挖数据,写写故事…..
但近期有较多感悟,先记下,以免后续忘却。当然也希望有另外一个人能从这篇推得到一些启发,正如我从大湿兄的一篇推得到启发一样
上两个一键出图(忽略其中的PanelGrid,随手测试的图片,懒得关掉PanelGrid了)
感谢
在绘图上,对我影响比较大的有三个人
硕导,不然我也不会接触生信,更没有现在的绘图
大湿兄-Y叔,应是在其创作了ggtree之后推了一篇文(那会我正好用JS在画树 - 这个谢谢Raindy提到的一起开发EasyCodeML,不然我也不会画树),其令我感悟最深一句大概是
树 就是 点和线 的组合
太经典,我立马重新审视了JS码,不正是这个逻辑吗?我却没有抽象出来。幸好看了这一推,于是才有后续我写的JJplot,JJplot2,以及现在的JIGplot
博导,…..不然我就没有想法写JIGplot了,因为我后来才明白,我们需要的不仅仅是GG语法
出发点
近期在博导的指导下,做了似乎真的不少图,也前前后后,调整并更新了很多。不得不说,我与博导的Level差距太远。确实在逻辑、排版、配色上都很难达到其审美尺度上的合格标准。存在这种情况的可能性有以下几点:
故事或者idea是博导的,这点影响比较小
排版 和 配色,这点上可能是经验问题,个人的经验至今可能只有一年左右,相比于博导的近十年,确实无法比
态度问题,其实我也很努力,态度上我自认为问题
所以,到底差别在哪里?差别
我想,差别在于两点:
专注(精确性),做生物的,是否能完全沉浸到一个生物学问题上
关注的点上(准确性),博导能很好把握用什么样的图片传递信息,而我似乎更多的或者只是单纯的关注怎么画出一张看起来似乎富含信息的图。
富含信息的图是有意义的,但是图片本身不是拿来存储数据的。而是拿来传递信息的,信息无法传递,意味着这个图其实不如不画(虽然能否传递到位受到于读者的背景知识影响)。
无论如何,如何确定生物学故事,如何绘制一张能直观传递信息的图,应是接下来一两年内我的学习重点。(当然,不能忘了,故事最好还是能启发应用)绘图小结
绘图大体可以分为探索性绘图和展示性绘图
看过《图层语法》(似乎只有英文的,即ggplot1/2/…实现基础的书),可能会有强烈的体会。ggplot2本身其实是统计!绘图。图层语法的能力非常强大,他当然能拿来绘图,看看现在的生态就知道了。似乎只有为数不多的人(其实我知道的只有ggtree作者Y叔),明确了ggplot2当然能做展示型绘图,而其最强大的或者最擅长,更或者最适合的,其实是探索性绘图。这也是为什么ggplot2出的图,在不少时候并不方便成为发表级别。更或者拼图等各方面其实很难,没有python的matplotlib方便。究其原因,我觉得,大家关注的点不同,或者说,抽象的水平不同,似乎其实并不能比较。ggplot2其实是基于grid,也就是base之上;而matplotlib我觉得应该是在grid类似的抽象水平。
进一步抽象,所有的图形都是点和线的组合
在绘图上,点其实是一个圆,矩形确定了点即可,多边形亦是如何。任何图形,有棱有角的可以用折线连接点,平滑的可以用B-样线,贝塞尔插值即可
编程出图大好,矢量图操作工具却也不可缺少
编程出图,常常可以实现一键出图(包括拼图)。但其实出的一般是探索性绘图方向的结果,最终论文发表一般设计到多个Panel,一旦子图不再改变,那么剩下的工作可能用矢量图编辑工具更方便。代码的好处是自由,而矢量图标记工具的好处是直观或直接。正如今天大湿兄的推,ggtree替换进化树名字,进行斜体加粗,太简单,太方便。更如要把植株图片或WesternBlot的图片跟柱形图拼合,那么可能,,,,真的还是矢量图工具手工方便。
休息
近两日,由于绘图的需要和良好状态的存在,快快地写了一些代码。而实际课题进度没有推荐,有不少实验必须尽快完成,有一些数据需要分析,也有一些故事要写。
我们还是要优先完成自己应该做的事情,其实才是自己感兴趣的事情,两者正好是一件,当然是最好,而现实往往并非如此。那么最新的TBtools在哪里下载?
没得下载,因为我这两天没时间打CLI 也没时间打GUI
我为什么不贴二维码了?
因为…没有必要,圈子很小,前面能推的都推了,再推也不会有多少关注人数的增加。那就不要推了。