1189 字

如何用图来折磨读者

威斯康星大学的Karl Broman教授除了喜欢晒照片让别人用各种模型计算自己洗衣机里的袜子到底有多少双以外还有个小爱好:告诉大家如何画一张可以让读者如坠云雾的。我在实验室是坚(zhuang)决(bi)不用excel,sigmaplot,origin等交互式软件出图的,但一直没有说原因,下面结合Broman教授的网页聊下在科研制图中折磨读者的一些方法:

饼图

如果你使用R,用?pie可以看到在Note部分有如下语句:

Pie charts are a very bad way of displaying information. The eye is good at judging linear measures and bad at judging relative areas. A bar chart or dot chart is a preferable way of displaying this type of data.

空口无凭,我们来看看下面两个图的效果:

人眼对角度与面积等二维数量的感知并不如一维的长短敏感,因此你看左边的图会觉得搞不清楚具体数值,而条形图直接看坐标一目了然。更愚蠢的表现就是把数字标到饼图上,拜托,用个表多清楚。什么?饼图里加误差线?你想折磨死读者啊。什么要搞成3D的?加上透视效果的饼图在我眼里除了想掩饰问题没有任何出现的必要。当然除非你想讲个冷笑话,例如下面这张(图源来自谢益辉):

那么什么时候用饼图呢?

NEVER

能用饼图就可以用条形图替代,且更清楚直观。

条形图

条形图本来就不是让你加误差线的,多数需要使用条形图的场景都可以使用抖动散点箱式图或者小提琴图来展示原始数据。误差线本来是用来表明数据离散程度的,如果直接标注上原始数据离散程度一目了然。那为什么原来不用抖动散点图呢?我猜测是因为条形图在过去方便手画,也相对简洁,但现在用软件作图可以不用考虑作图难度,以表意优先。其实条形图太容易掩盖原始数据异常点的问题了。

我们来看一下用条形图和抖动散点箱式图来展示同一组数据会有什么情况。

再看看加入在Treatment里加入异常值的情况,当然这里比较极端。

也许有人会说用误差线去判断差异是否显著,这其实是两个问题,一个是展示数据,另一个是进行统计推断,搞不清楚可以看这里

另外在毒理学方向的文献中经常有人喜欢用配对条形图表示剂量-效应关系,这样很不好,就几个数配到一起是看不清楚的,其实带有参考线的散点图就很好,试对比下面几个图那个表述前后差异更清晰。

当你关注点是前后差异时,最好就直接把前后差异表示出来,人眼做减法不那么灵。

3D图

每当有人问我如何做3D图时我都习惯性反问:有没有一定要做3D图的必要?人眼连2D的面积对比都不敏感,更不用说3D了。如果纯粹是为了让图片漂亮些,花些功夫在配色上可能更有效,原则很简单:你看不明白的,别人同样看不明白。例如,对比下面这两幅图:

有些场景必须要用3D图时一定考虑透视对数据展示的影响,不然会让人产生错误的理解。

小结

在作图时,以表意优先,不要使用任何可能出现掩盖数据的图表。此外,饼图与3D图可以直接上黑名单,在条形图的使用场景里要叠加原始数据,让读者可以直接读出答案而不是通过模型来猜。

参考文献