以下部分是基于《Fundamentals of Data Visualization》学习笔记,要是有兴趣的话,可以直接看原版书籍:https://serialmentor.com/dataviz/
对于连续性数据,我们经常需要来了解数据的分布。例如,我们在临床数据当中收集了1000名患者的信息,那么对于这些患者的年龄是什么样子的,这个时候就需要从对其年龄的分布进行一下了解。
PART 1
单个分布的可视化
对于一个连续性的变量,进行分布可视化最基本的图形是直方图。每一个直方图进行可视化的时候都是分成两步的:(i) 把数据进行分组,首先把连续性的按照一定的范围进行分组,然后再统计这个范围的人数。(ii) 对上面分组的数据可视化,主要是通过类似条形图的方式来展示出来。
例如上面的例子,我们可以按照每五岁做一个分组,这样就先形成这样的一个表格。
进一步我们再去绘制一个基于分组形成的数据来绘制类似条形图的形状。
通过以上直方图绘制的步骤我们可以了解到,其实直方图的绘制还是和分组的多少(bin)。如果组数过多那么就会有很多条,如果组数过少则可能反应不出数据的正确的分布趋势。因此对于一个直方图的绘制,我们往往需要不断的去尝试不同的分组。
对于数据分布的另外一个可视化方式则是密度图。在密度图中,我们试图通过绘制适当的连续曲线来可视化数据的潜在概率分布。关于密度图的绘制,其实和直方图一样也是分了两步,只不过第一步的分组是分了很多小组。都是先分组后绘制的,所以分组的多少也就导致了曲线是不一样的。
另外,关于密度图有一个陷阱就是:有时候密度图会在没有数据的地方绘制出曲线。例如下面这个图,就出现了年龄是负数的曲线。这样的话,对于数据可视化而言就会产生误导。所以对于密度图的时候,其实在一次性可视化多个分布的时候是有好处的。如果是可视化一个分布的话,可能直方图更好一些。
PART 2
一次性可视化多个分布
我们在检查数据分布的时候,有时候不仅是看总体的数据分布,有时候还要看亚组的数据分布,比如我们?那个例子,在年龄里面,我们想要看男女的年龄分布的话。
在这种情况下,一种可视化的方式是使用堆叠直方图。我们用不同的颜色在男性条形图的顶部绘制女性的直方图条形。这种可视化方法其实是有两个问题:(i) 在图上我们很难看出上面那一个亚组的具体数量。(ii) 不同亚组之间的比较也是很难做到的,在图中我们很难看出男女之间在某一年龄段的差异有多少。
为了解决上面的问题,我面可以尝试把两个分组都从零开始并使部分透明来解决这个问题,这样虽然解决了?的问题,但是又出现了新的问题。就是在图中其实有三个分组,而不是两个(重叠的、没有重叠的男女)。这也就导致了视觉上有一定的混淆。我们很难在看图 的时候保持对某一个分组的专注。
对于这个重叠引起的问题,重叠的密度图就可以解决。因为连续的密度线可以帮助眼睛使分布保持分离。但是,对于这个特定的数据集,男性和女性乘客的年龄分布在17岁左右之前几乎是相同的,然后发散,因此最终的可视化效果仍然不佳。
这个数据集的一个很好的解决方案是分别显示男性和女性的年龄分布。同时在每一个分面里面添加总的分布来进行额外的比较。
最后,当我们想要精确地显示两个分布时,我们也可以制作两个独立的直方图,将它们旋转90度,并使两个直方图背靠背。当可视化年龄分布时,通常使用这个技巧,结果图通常称为年龄金字塔。
以上介绍的,都是两组分布的时候如何可视化,如果是多组的话,如果使用直方图就比较混乱了。这个时候,就应该使用密度图可能更好一些。