6个可视化美学原则,让你的图表惊艳所有人
在任何图形中,一些笔墨(墨水)用于表示实际的基础数据,而其余一些笔墨(墨水)则用于图形效果。一般而言,可视化应侧重于显示数据本身。我们将数据墨水比率定义为:
图1按性别列出了平均工资(来源:劳工统计局,2015年),其将有助于解释这一概念。你更喜欢哪种数据表示形式?左图写着“酷,你是如何制作这些阴影和三维透视效果的?”右图写着:“哇,女性的收入在各个方面都很低。但为什么咨询师的差距最小呢?”
▲图1 三维条形图渲染阴影(左)可能看起来令人印象深刻,但它们实际上只是图表垃圾。而仅仅展示数据(右)可以增加清晰度以及数据墨水比率
最大化数据墨水比率可以让数据说话,这是整个可视化练习的重点。右边的平面透视图可以更公平地比较柱形的高度,因此,男性对女性而言看起来不像是无足轻重的角色。这些颜色在对男女各方面进行一一对比时,起到了很好的作用。
有更多极端的方法可以提高数据墨水比率。为什么我们要画条形图?同样的信息可以通过绘制一个适当高度的点来传达,如果我们绘制的点比这里显示的8个点要多得多,那么这显然有很大的改进。请注意,可视化数据越少越好。
可视化方法是试图讲述一个关于数据所展现内容的真实故事。谎言最简单的形式是捏造数据,也有可能虽然展示的数据是真实的,但是陈述的内容却不符合事实。Tufte将图表的谎言因子定义为:
图形完整性要求最小化谎言因子,这可以通过避免采用容易误导的技术来实现。不良做法包括:
无方差表示均值:两组数据集{100,100,100,100,100}和{200,0,100,200,0},虽然其均值都是100,但是表达的故事却不相同。如果不能用均值绘制实际点,至少要显示方差,以清楚均值所反映的分布的程度。
在没有实际数据的情况下进行插值:在呈现变化趋势和简化大型数据集方面,回归曲线和拟合曲线是有效的。但是如果在图形中不显示这些曲线所基于的数据点,就无法确定拟合的质量。
比例尺失真:图形的长宽比会对我们解释所看到的内容产生巨大影响。图6.6给出了给定财务时间序列的三幅渲染图,除了图表的纵横比外,其余均相同。
▲图2 财务时间序列的三幅渲染图(哪一个最准确地代表了真实情况)
在最下方的图形渲染中,曲线看起来很平整:这里没有什么可担心的。右侧的图中,利润呈现断崖式下滑:简直是天塌下来了!左侧图片的曲线也出现严重下跌,但是在秋季有反弹的迹象。
哪个图形展示的内容是对的?人们通常习惯于按照黄金比例查看图形曲线,这意味着宽度应该是高度的1.6倍左右。除非有充分理由说明不恰当的原因,否则请按照这个比例向受众进行展示。心理学家告诉我们,45度线是最容易解释的,因此请避免使用那些被过分放大或减弱的线条形状。
消除数字轴上的刻度标签:即使是最严重的刻度失真也可以通过不在坐标轴上打印数字参考标签来完全隐藏。只有使用数字比例尺标记,才能从绘图中重建实际数据值。
隐藏图中的原点:大多数图形中的默认假设是y轴上值的范围从零到ymax。如果y范围变为ymin-ε到ymax,我们将无法直观地比较量值。这会使最大值突然看起来比最小值大很多倍,而不是按比例缩放。
如果图1(右)是在y取值为[900,2500]内绘制的,这表明咨询师正在挨饿,而不是像软件开发人员和教师那样获得与药剂师相近的薪水。只要在坐标轴上标有刻度,就可以识别这种欺骗,而不会很难捕捉。
尽管已经知道了Tufte公式,但还是无法机械地计算谎言因子,因为需要了解失真背后的原因。在阅读任何图表时,了解谁绘制的图表以及为什么绘制这些图表非常重要。理解制表人的想法应该能让你意识到图表中潜在的误导性信息。
无关的视觉元素会分散数据试图传达的信息。在一个令人兴奋的图表中,讲述故事的是数据,而不是图表垃圾。
图3显示了一家公司开始在遭遇经济不景气时的月度销售时间序列。所实验的图形是条形图,这是一种用于表示时间序列数据的很好的方法,同时其绘制使用了常规(可能是默认的)选项以及合理的绘图包。
▲图3 月底销售时间序列(我们如何改进/简化这个条形图时间序列)
但是,可以通过删除元素来简化这个图,使数据更加突出吗?在仔细观察图4之前,请仔细考虑一下这个问题,图4中连续对图3进行了4次简化处理。其中的关键操作包括:
解放数据(左上方):浓重的网格通过在视觉上对内容的控制,而约束了数据。通常可以通过删除网格或至少减少网格来改进图形。
数据网格的潜在价值在于其有助于更精确地解释数值。因此,在需要准确引用大量数值的绘图中,网格往往具有很大的用途。强化网格线可以充分胜任此类任务。
停止投射阴影(右上方):这里的加深背景对图形的解释毫无帮助。删除它会增加数据墨水比率,并减少干扰。
对边框的考虑(左下角):边框实际上并没有提供任何信息,尤其是没有定义坐标轴的上边框和右边框。去掉边框,会让图中的数据更加突出。
利用缺少的墨迹(右下角):通过从条形图中删除网格的线而不是添加元素,可以恢复网格的参考价值。这使得比较那些最大数字的量级变得更容易,方法是将注意力放在条形图中相对较小的顶部部分的大变化上,而不是放在长条形的小变化上。
▲图4 通过删除多余的非数据元素,对图3连续的四次简化
建筑师Mies van der Rohe曾说过“少即是多”。从图形中移除元素通常比添加元素更能改善图形的可视化。让它成为你的图形设计理念的一部分吧。
缩放和标注的不足会使图形产生有意或无意的错误信息。标注需要准确地说明数字的大小,比例尺需要能够以适当的分辨率显示这些数字,以利于比较。一般而言,应按比例缩放数据,以填充图表上分配给它的空间。
对于是在变量的全部假设范围内缩放坐标轴,还是将其缩小到仅能够反映观测值,明智的人可以做出正确的判断。但是某些决定显然是不合理的。
图5(左)显示了将近一百种语言在两个变量间的相关性,由于相关性范围在[-1,1]之间,所以在横坐标中,他不得不使用图中所示的区间段。从这幅图的大片白色只捕捉到了这样一个概念:要是使相关性接近1.0,我们可以做得更好。但这个图在其他方面是不可读的。
图5(右)显示了完全相同的数据,但是坐标轴的比例尺进行了放大。现在可以看到,当我们从左向右移动时,性能有了提高,并可以看清任何一门语言的分数。左侧图中,这些条形与刻度的距离太远,很难看清具体的数值。
▲图5 当图中有大量空白时,缩小比例尺是很愚蠢的行为(左)。恰当的缩放会让比较变得更加容易(右)
如果在缩小了坐标轴的范围后,导致这些条形不能被完全展现出来,那就出问题了,因为此时无法从条形的高度判断其真实数值。我们在这里标注了y=0这条线,以帮助读者理解每个条形必须是完整的。从网格中获取数据也会有所帮助。
颜色越来越多地被看作图形表达的一部分。颜色在图表中起到两个主要作用,即标记不同的分类和编码数值。用不同颜色表示不同类型、集群或等级的要点,会在传统的散点图上对信息的另一个层次进行编码。当我们试图确定不同类间数据分布的差异程度时,这是一个很好的办法。最关键的是,通过使用不同粗体原色,可以轻松区分每个等级。
所选择的颜色最好可以让我们自然而然地联想到它所代表的种类。例如,应该用红色表示损失,用绿色表示环境因素,用其国旗中的颜色表示国家,用球衣的颜色表示球队。将男性表示成蓝色,女性表示成红色,这就为受众解读散点图提供了一个微妙的线索。
用颜色表示数值尺度是一个比较困难的问题。彩虹的颜色图在感知上是非线性的,这意味着紫色在绿色之前还是之后对任何人都不明显。因此,当用彩虹色绘制数字时,将相似的数字以相似的颜色分组,在没有显式参照色阶的情况下,无法察觉相对大小。图6显示了来自Python的MatPlotLib的几个色阶,以便进行比较。
基于亮度或饱和度变化的色阶表现效果会更好。颜色的亮度通过将色调与灰色阴影(介于白色和黑色之间)混合来调制。饱和度是通过混合一部分灰度来控制的,其中0产生纯色调,而1是去除所有颜色。
另一种流行的色阶具有明显的正/负颜色,周围的白色或灰色中心反射为零。因此,色调告诉了受众数字的极性,而亮度/饱和度则反映了幅度。某些色阶对色盲者来说更有帮助,特别是避免使用红色和绿色的色阶。
▲图6 从Python的MatPlotLib中调整颜色比例,改变色调、饱和度和亮度。彩虹色地图在感知上是非线性的,因此很难识别差异的大小
一般来说,图中的大区域应显示为不饱和颜色。相反,对于小区域而言,其在饱和色下表现更好。色彩系统是一个令人惊讶的技术和复杂问题,这意味着你应该始终使用已有的完善色阶,而不是自己发明色阶。
小型多重图和表是表示多元数据的好方法。
多个小图表有许多用处。我们可以使用其按类分解分布,也可以按地区、性别或时间段绘制单独但可比较的图表。一系列图便于比较不同分布之间的变化。
时间序列图使我们能够在不同的时间点上比较相同的数量。最好是去比较多重时间序列,要么用于同一个图上的线,要么用于反映其关系的逻辑数组中的多重图。
本文摘编于《大数据分析:理论、方法及应用》,经出版方授权发布。(ISBN:9787111703471)转载请保留文章出处。
推荐理由:本书由算法领域的知名专家Steven Skiena教授撰写,重点介绍了收集、分析和解释数据所需的技能和原理。