《数据可视化基础》冗余编码
在之前的章节当中,我们已经看到颜色不能总是像我们期望的那样有效地传达信息。如果我们要对很多分组进行着色区分,则会导致由于颜色过多,很难将图中的颜色与图例中的颜色进行匹配的情况。即使我们只需要区分两到三个不同的分组,但如果有色项目很小和/或对于色觉不足的人来说颜色看起来相似,则颜色可能会失败。在所有这些情况下,通常的解决方案是使用颜色来增强图形的视觉外观,而不必完全依靠颜色来传达关键信息。我们将此可视化原理称为冗余编码,因为它会提示我们使用多个不同的映射对数据进行冗余编码。
使用冗余编码设计图例
在具体不同分组的散点图上,我们可以通过对散点图进行不同的着色来代表不同的分组。在👇的图中就显示了三种不同的不同虹膜物种的萼片宽度与萼片长度之间的关系。在图中出了点的颜色不同,其他的方面基本上是一模一样的。这个图主要的问题是,图中的两个分组virginica和versicolor数据基本重叠在一起,而且他们的配色也没有多大的区别。
这样的图,对于具有红绿色相差视力的人,绿色和蓝色的点看上去比具有正常色彩视觉的人的更明显。另一方面,对于蓝黄色缺陷(tritanomaly)的人,蓝色和绿色的点看起来非常相似。
另外如果这个图我们黑白打印的话,那在图中各个点就是一模一样的了。
我们可以通过两个简单的改进来减轻这些问题。首先,我们可以交换用于鸢尾花和鸢尾花的颜色,以使蓝色不再紧靠绿色。其次,我们可以使用三种不同的符号形状代表不同的分组。通过这两个更改,该图的原始版本以及在灰度下的版本都变得清晰易读。
更改点的形状是散点图的简单策略,但不一定适用于其他类型的图。在折线图中,我们可以更改线条类型(实线,虚线,点线等),但是使用虚线通常会产生不好的效果。由于虚线不是笔直的,我们需要花费很大的努力来观察虚线的走势。如果是这样的话,我们要怎么调整下面这个图呢?
👇的图包含四行,分别代表四家不同公司的股票价格。这里的问题是数据线具有清晰的视觉顺序。代表Facebook的黄线显然是最高的线,代表Apple的黑线显然是最低的线,Alphabet和Microsoft在这两个之间中。然而,在图例当中四家公司的顺序是Alphabet,Apple,Facebook,Microsoft(字母顺序)。因此,数据线的感知顺序与图例中的公司顺序不同,并且需要花费大量的精力才能将数据线与公司名称进行匹配。
自动生成图例的绘图软件通常会出现此问题。绘图软件不具有感官的概念。它们一般是按照某种顺序(最常见的字母顺序)对图例进行排序。这个时候,我们可以通过手动重新设置图例中的条目以使其与数据中的预期顺序匹配来解决此问题。
将图例顺序与数据顺序相匹配总是很有帮助的。在色觉不足模拟下,其优势尤其明显。在👇的图中,尽管我们不能通过曲线的颜色来判断代表哪个公司。但是我们可以通过图例的位置来进行判断。
如果您的数据中有清晰的视觉顺序,请确保在图例中将其匹配。
设计没有图例的图形
即使可以通过冗余编码来提高图例的易读性,但从多种美学角度来看,图例始终会给读者带来额外的心理负担。在阅读图例时,读者需要图例当中吸收相关信息,然后将其转移图片解读上。如果我们完全消除图例,通常可以使读者更轻松。但是,消除图例并不意味着我们只是不提供一个图例,而是在该图片说明中写上诸如“黄点代表杂色鸢尾花”之类的句子。消除图例意味着我们设计了图形,因此即使没有明显的图例,各种图形元素所代表的含义也立即显而易见。
我们可以采用的一般策略称为直接标记,即我们放置适当的文本标签或其他可视元素,作为其余图形的指引。例如上面四个公司的图,我们可以将每个公司的名称放在其各自数据行的末尾。

尽可能设计您的图片,使他们不需要图例。
同样的,我们可以把直接标记的方法用到之前的散点图上。由于图形是散点图,我们需要直接标记哪些点是什么分组。这种标记一个办法是绘制一个椭圆来包括相关的点,同时对这个椭圆进行标记。
对于密度图,我们可以类似地直接标记曲线,而不是提供颜色编码的图例(图20.10)。
通过将密度图放置在散点图的边缘,我们还可以使用密度图代替图例。这使我们可以直接标记边际密度图,而不是中心散点图,因此所产生的图形比直接标记椭圆形的图清晰一些。