让人纠结的 ggplot2

R 语言的 ggplot2 包很美很酷。比如,基于 ggplot2 做出的配对儿图是这样的:

而在 ggplot2 出现之前,用基础包和其他包做出来的配对儿图顶多是这样的:

确实差好几条大街。

然而,ggplot2 简单的指令还好办,稍微需要调整一下的作图方法,我始终没法熟练掌握。

我觉得主要原因就是 ggplot2 作图的细节调整太难。

科研工作的主要内容就是发表论文,而论文投稿后,审稿人会提出五花八门的修改意见,包括对插图的细节调整,有时候很变态,有时候很无聊。在不影响内容的前提下,照做才能顺利通过,死扛的话可能会被拒稿。

有一次,有个审稿人要我减少相邻子图之间的间距,或者共用同一个纵轴的刻度和 ylab。

还有一次,有个审稿人是色盲,要求更改图中某几个点的颜色。

这个事儿在基础作图里信手拈来,但是 ggplot2 里,因为不熟,还得去 google,还得去提问,活活把重点从自己研究的“道”歪到了作图这个“术”上。

然而即使这样还不一定能解决。比如有人问双坐标轴的问题,ggplot2 的开发者 Hadley 本人回复说 ggplot2 不可能做。那我总不能对审稿人说,我画不了,因为作图软件不支持,来,咱们放下大气污染的问题,先讨论一下双坐标轴的弊端吧。

推崇 ggplot2 的人经常说, ggplot2 做出的图,如果用基础作图函数来做的话会非常繁琐。然而反过来也一样:基础函数作出的图, 用 ggplot2 实现起来也会很繁琐。当然, ggplot2 确实很美,然而判断美丑有很大的主观成分(当然,除了一些通用的标准外)。我说“美”,但审稿人和老板说“改”,这样就很惨。就好比用 LaTeX 的员工遇见了个用 MS Word 的老板,就算生成的 pdf 再漂亮,老板一句“把你的修改稿用修订模式发给我”就足足打消了深究 LaTeX 的动力。

我觉得 ggplot2 适用于那些自己说了算的场景。老子就这么画,意思表达清楚就行了,细节靠边站。体现到研究工作里,适合用于数据的初步可视化、海报和口头报告、讨论等,但不适合我这个领域的正式出版物,除非精通到指哪儿打哪儿。

comments powered by Disqus