数据可视化
图形是直观呈现数据的直接方法。然而,将大量数据在同一个图表中画出来并不容易。早期的测绘、天气数据都需要长时间的手工绘制。随着计算机绘图功能的开发,手工绘画已经完全被自动绘图程序取代。问题的核心转移为,要以怎样的方式呈现数据,以便数据中的信息能自然的体现出来。数据可视化(data visualisation)就是研究如何利用图形,展现数据中隐含的信息,发掘数据中所包含的规律。它是一门横跨计算机、统计、心理学的综合学科,并随着数据挖掘和大数据的兴起而进一步繁荣。
下面一个视频来自Hans Rosling。他是瑞典的一位医学家,同时也是统计学家。在下面的这个BBC制作的视频中,Hans Rosling用丰富的可视化手段,展示了近两百年来世界各国人口和收入的演化。我给这段视频增加了中英文字幕,以方便观看。如果有错误,请见谅。
数据的信息维度
Hans Rosling所做的数据图值得研究。数据展示的基本信息有2个维度:
1) x轴, 人均收入
2) y轴, 人均寿命
这两个轴是作者想要表达的最基本信息。图上的每个点代表一个国家,该点所在的x-y位置代表了国家的人均收入和人均寿命。人均寿命的刻度线性增长(25岁,50岁,75岁),但人均收入的刻度是指数增长(400元,4000元,40000元)。人均收入的刻度非常值得注意,否则很容易给人造成错误的印象。比如说三个国家A,B,C,人均收入分别为40, 4000, 40000元。尽管在图表中,A和B,B和C都只相差一个刻度,但C和B的收入差距实际上A和B收入差距的10倍!
此外,还有两个维度的辅助信息:
3) 圆圈大小,国家人口
4) 圆圈颜色,国家所在区域
平面可以自然的分为两个维度(比如上面的x和y)。为了增加其他维度的信息,我们需要考虑其他的独立表示方法。数据点可以有尺寸大小和颜色变化。正如这里所显示的,Han Rosling利用这两个图像特征来表示两个独立的维度(国家人口,国家所在区域)。
通过整个视频中年份的变化,Han Rosling还有一个明显的5)时间维度。利用动画的形式来记录信息随时间的变化状况,是数据可视化中常用的手段。然而,在使用动画的时候需要谨慎。动画会留给观众相对比较少的时间进行深入思考。所以在动画过程中需要适当的暂停(或者截图)来显示一些典型状况。
***,整个数据还有一个非常隐藏的信息维度,就是Han Rosling不时的会表明某个圆圈所代表的6)国家名称。也就是说,国家名称也是一个隐含的,随时可以获知的信息。
眼见为实?
随着Han Rosling慷慨激昂的演讲,我们被带往一个结论:这个世界的收入和寿命差距在减小。世界作为一个整体,变得更加富有也更加健康。
数据似乎是在说明这一点。或者不是?
比如上面两个截图,被用来说明国家间的差距在减小。然而,我们上面提到,收入的刻度是10倍增长的(这样的刻度被称为对数刻度)。所以当一个国家比较富裕之后,它的财富增长比较难以在刻度上体现出来。比如同样增加3600元的收入,可以让一个原来收入400元的国家跨入中间区域,而一个原来收入40000的国家几乎原地不动。如果将x轴改为线性,那么国家间人均收入的差距将大大超越这幅图所带给人的直观感受。
(而在不考虑通货膨胀的情况下,所谓的整体收入增长的结论也不是很可靠。)
从y轴的信息看,整个世界的健康水平是提高了。即使是如此,我们依然要小心,比如下面两幅图,绘制的是相同的数据(标普500指数),唯一的差别在于y轴刻度范围。
是否举得第二张图的波动更加剧烈?但两张图是相同的数据!可见,刻度的范围会影响人们对数据的认知。小的刻度范围会让人觉得数据变化较大(即使数据本身还是一样的数据)。
因此,一个图表是由数据和绘制方法两方面构成的。图表并不等同于数据,绘制方法有可能会影响人们的主观认识。一个合格数据图表应该尽量客观的反映数据。
(当然,一个熟悉数据可视化原理的人,也可能会利用这些方法故意夸大。这在宣传海报中常常见到。)
数据绘图的要素
现在,转换位置思考。假设,我们有一批数据,那么应该怎么来着手呈现呢?这个问题并不好回答,原因有二:
1) 数据中包含有大量的信息维度,我们只能选择其中的一些而非全部呈现。
2) 数据的信息呈现方式多种多样
我们需要先确定想要绘制的信息维度。比如上面的视频中,六个信息维度得到呈现。而在S&P 500的绘图中,我们只呈现了两个维度的信息,时间和指数。如果图像中信息维度比较少,图表会比较容易理解; 如果信息维度多,那么图表会比较复杂,但更容易体现多变量之间的关系。
每个信息维度都需要一个坐标,来表现数据在该维度上的取值。在Hans Rosling的绘图中,六个坐标分别是:水平x轴,竖直y轴,圆圈颜色,圆圈大小,动画帧所对应的时间,以及文字标明的国家名。这六个维度之间相互独立,所以可以互不干扰的反映各个维度上的取值。再比如下面的条形图和饼图。它们都是在反映二维信息。条形图采取了x-y的坐标。饼图采取了文字-圆心角的坐标。
每一个坐标都需要有刻度。读者需要根据刻度获知数据的准确取值。刻度可以是均匀线性增长的,也可以是不均匀增长(比如对数刻度)。刻度的选择要根据数据的特征。如果不同数据样本在某个维度上取值差异较大,就适用于对数取值。比如下面这幅xkcd 1162的画,就展示了不采用对数刻度的恶果。
Log Scale (xkcd 1162)
此外,刻度还需要有范围。正如再S&P 500的绘图中我们谈到的,过大的刻度范围会从视觉上减小波动。一个常用的刻度范围是数据在该维度上的***和最小值。但一些情况下,***和最小值可能是由于错误状况造成的不可靠数据,所以会采取平均值加减标准差的范围。
在维度和刻度都选取好了之后,要再坐标轴旁标注这是什么维度,维度的单位,并在坐标轴上标注刻度值。这样,我们才完整了数据在该维度上的信息。一个有坐标轴,有刻度但没有标注的数据绘图,是失败的绘图。读者根本无法从中获知数据的真实状况。
(在Hans Rosling的绘图中,有两个维度的信息不完整:人口总数和国家名称)
在上面完成了之后,我们需要进一步说明数据来源。我们可以采用增加文字说明的方式来实现这一点(比如增加一个标题)。
总结
数据可视化非常有趣。它通过技术的手段,将枯燥的数据变得生动可爱。随着大数据时代的到来以及网络传播的发达,数据可视化会成为一项值得掌握的技能。这篇文章里,我通过一个很棒的视频说明了数据可视化的一些要点,特别是信息维度的问题。我会在以后介绍一些常用的绘图工具,将理论转化为实践。