Cloud2016 问题是我并不太赞成他们后悔加号的理由。我觉得数据处理和画图这两件事不应该用管道揉在同一个表达式中,所以也就不应该存在“(dplyr 式的)数据处理用管道、管道流进 ggplot2 却被迫切换加号”这种矛盾。对 GG 画图来说,我个人认为加号是更自然的选择:画图是元素叠加,而不是元素流入下一个元素(不像数据处理)。他们后悔死,我觉得是被自己制造的规则给束缚了,仿佛去掉了格律就无法写诗一样。
不过我已经想到踢开这块铁板的办法,现在基本上可以把这两个函数定型在 labels() 和 transform() 上了。加法的魔法可以继续,对管道爱好者也毫无影响。title() / header() 函数的问题我用复数 titles() 解决了,正好和 labels() 复数保持一致,本来标题也就包含正标题、副标题(虽然副标题是可选的)。
他们同样后悔死的还有 qplot(),但在这一点上,我又不太同意,我觉得快速出图的优势大于它背后的魔法带来的学习理解障碍。这就像帕累托法则一样,若快捷通道能解决相当大一部分应用场景,那我觉得就该提供快捷通道,而不是每幅图都非得严格按照那个图形语法一项项显式叠加;画个简单的散点图、条形图、直方图都要显式声明 geom 的话,我觉得好累人。