1967年,雅克·贝尔廷在对制图学中的可视化图形技术进行了大量分析的基础上,提出了用符号和视觉变量表示图形化数据的想法 2,3 。符号是信息的载体,并且可以根据不同的维度加以区分。其中零维是点,一维是线,二维是区域,三维是实体。符号是可视化图形的基本组成部分。
真实的信息通过视觉变量(如位置、形状或颜色)传递给我们,这些变量控制着符号的图形外观。换句话说,将数据转换为图形也可以理解成绘制原始图像,并根据基础数据值确定其外观。这种图形化数据的概念至今仍然是现代可视化图形的基础。
让我们来深入地了解下如何利用视觉变量来绘制图形。视觉变量可以理解为在特定范围内变化的图形属性。变量值的不同变化也会产生不同的感知效果。例如,我们可以看出符号的位置、形状或颜色。视觉变量的概念最初由雅克·贝尔廷提出,后来又经过了多次修订和拓展 4,5 。图3.2中就是现在常用的视觉变量。
图3.2 常用的视觉变量
我们可以借助视觉变量来组合成不同的可视化效果,也就是数据的图形。在这方面,首先必须解决两个问题:
● 绘制什么?
● 怎么绘制?
首先,要确定用哪些视觉变量来代表哪些数据变量。根据第2.2.2节,我们需要根据当前的分析任务来确定变量的分配。也就是说,先从分析任务来确定相关的数据变量,然后再对应到合适的视觉变量中。那么接下来的问题是,怎么才能知道哪些视觉变量合适?答案就在第2.2.1节提到的人类的感知能力和数据域中。
借助对人类认知方面的研究,科研人员发现视觉变量会对定类数据、顺序数据和标量数据产生不同的影响 6,7 。视觉变量,即允许用户精确分类的变量,适用于对定类数据进行编码。利于可视化效果排序的变量适用于对顺序数据进行编码。能够评估比例或差异的变量适用于对标量数据进行编码。
图3.3所示是视觉变量在不同数据中的有效性。有意思的是,一方面,位置编码在任何数据中都是最重要的;而另一方面,这些视觉变量在不同的数据域中起到的效果也都不一样,比如颜色和形状在定类数据中的作用非常重要,但是在顺序数据和标量数据中的作用却比较微弱或者干脆没有。
图3.3 不同数据类型中视觉变量的影响
当我们确定了绘制的图形以后,下一步就要考虑如何将视觉变量和数据相对应。我们在第二章中曾提到过,分析任务和现有的数据都会影响到变量之间的对应。前文中的图2.8也向我们说明了不同的颜色用在不同任务中的效果。接下来,我们简单介绍一下绘制任务和数据图形的高级方法。为了简洁起见,我们主要来谈一谈如何选择颜色。
分析任务的意义在于方便用户在显示器上看出数据。为了能使显示效果更清晰,我们在这里使用渐变色的图形。渐变色能够明确地显示出颜色差异与数据中的潜在差异形成的不同效果 8 。在理想情况下,每个数据值都应该有一个清晰可见的颜色。当然,这种理想的情况也取决于显示器的性能和用户的视觉能力。
定位任务指的是确定目标数据的值或者分组在可视范围内的位置。我们可以使用彩色图形,因为彩色图形可以很明确地显示出相关数据。另外还要考虑到用户的视觉能力,所以需要根据人类的普遍视觉能力预设一些可视化标准 9 。例如,相关的数据可以用明亮的颜色来表示,而关系不大的部分则用暗淡的颜色来表示。
另外还有一个重要因素,那就是分析目标对象到底是独立数据还是数据集。对于独立数据来说,渐变色的图形比较合适。而分段颜色的图形则适用于数据集。图3.4中是彩色的简明示意图,用于区分和定位独立数据值和数据集值。图3.5中的两个彩色图用来表示三年内的每日气温。其中,图3.5(a)用渐变色的图形来区分数据值,图3.5(b)用分段图形来定位特定的数据集值,其中的目标数据是三年内温度达到10℃~12℃的天数。我们在这两幅图中可以清晰地发现,使用不同颜色时,图中的表现也各不相同。我们暂时还看不出来其中的工作原理,那么我们将在下面的内容中做详细解释。
图3.4 分析和定位独立值和数据集
图3.5 将图3.4中的颜色应用于气温数据图
通常,最小值到最大值之间的全部数据范围都会对应到视觉变量的整个颜色范围中。下面的公式所代表的柱状图通常用于将视觉变量v val (基于本示例)指定给某个数据变量d val 。首先,计算出标准数据值t∈[0,1]:
然后,将标准数据值t代入公式,从视觉变量[υ min ,υ max ]中计算出实际的数据变量υ val :
图3.6中所示为标量变量与渐变色图形的对应规则。注意,对于标量数据来说,首先应该根据其类别和顺序转换为数字,具体公式请参阅 10 。标量数据和定类数据之间的区别并不是影响绘制图形的唯一因素。接下来,我们用另外的例子说明。
图3.6 数据变量和视觉变量的基本对应规则
作为第一个基于数据的转换示例,我们参照图3.7(a)中的标准。在用户解读图形时,即根据图形反推数据时,需要有一个参照的标准。如果只是简单地依据数据的最小值和最大值来反推,会产生过多不必要的解读。从图中可以看出,如果将对应范围[d min ,d max ]乘以2或者除以10,那么就可以让范围更加简单明了 11 。相关具体算法请参阅 12 。
除了数据的最大值与最小值之外,其涵盖的范围大小也会影响到与视觉变量的对应。前文介绍的一些基本对应法可适用于许多情况。然而,对于覆盖多个量级的大型数据值范围,包括最大值和最小值,那么柱状图就爱莫能助了。在这种情况下,我们使用非柱状图来呈现。图3.7(b)中对比了柱状图和对数转换后的图像。在对数转换后的图像中,t的计算如下:
图3.7 各种基于数据的图形
在已经确定了可用值范围的情况下,甚至可以不必使用柱状图或对数转换后的图像。图3.7(c)所示是箱型图,这种图形与基于数据范围属性而形成的图形相比更为基础。在这个例子中,箱型图中的数据按照内外四等分来粗略分布 13 。所以在这个图形中,用蓝色和红色突出显示了最低和最高的异常值,而正常值用白色表示。
最后一个例子,当我们对比两个数据变量或者分为两步获取的数据时,应该采用哪种图形呢?绘制图形的难点在于平衡两种相互矛盾的需求。一方面,要比较的独立数据集应该是可辨别的,而且数据值应该清晰明确,这就要求我们对每一个要比较的数据集单独进行编码;另一方面,这些数据集必须要有可比性。然而,我们在很多情况下却没办法使用独立编码,相反,为了使相同的数据值显示出同样的视觉效果,也就是说无论这个数据值与哪个数据变量或者时序有关,我们都要使用统一的编码来表示。这就可能会导致图形中的某些局部数据被抹掉。
为了解决这种需求矛盾,我们可以将多个颜色组合成一个专用的比较色域范围 14 。图3.8所示是一种用于比较两个数据变量A和B的方法。变量A的值较小,使用绿色表示,而变量B的值较大,用蓝色表示。浅灰色表示两个变量的共同值。在多色域图形的帮助下,我们不仅可以进行数据的比较,而且独立数据依然可以被区分出来。
图3.8 用混色图形对比两个数据变量
总之,我们在决定数据值和视觉变量之间的对应关系时,一定要多方考虑。这里所说的颜色编码方案同样适用于其他视觉变量。有关不同任务和数据特征的颜色编码方案的更多内容,请参阅本章末尾的延伸阅读。在接下来的内容中,我们将会进一步了解如何制定包含多个视觉变量的图形绘制方案。
1对1的图形绘制属于最基本的方案,也就是单个数据变量对应单个视觉变量。然而,也有可能是单个数据变量对应多个视觉变量。这种方案实现起来有两种途径。1个数据变量对应n个视觉变量,那么就可以利用n个视觉变量来组合成1个数据变量。而需要绘制多个数据变量的图形时,那么就需要n对应n。这里要注意,n对1是没有任何意义的,因为颜色是固定的。
1对n的图形。 通常来说,多个视觉变量是可以对应1个数据变量的。例如,我们可以根据同一个数据值来设定标记的位置、大小和颜色,以便于更清晰地识别数据。
我们有一个比较灵活的方法,那就是当视觉变量n=2时,可以利用双色调来表示。采用双色调的目的是实现精确的数据值识别,同时还能保持较低的空间利用率,参照图3.9所示。将数据绘制成图形后,效果立刻就会变得直观。通常为了容纳更多数据,那么就必须增加纵向显示面积。而如果把数据转换成彩色图形,就不需要很大的显示面积了,但信息读起来却很困难。在使用渐变色图形时,我们需要花一些时间来确定数据值和颜色是如何对应的。分段颜色的图形只能用来分辨离散值,那么我们就来看看双色图是怎么做的。
图3.9 双色图释义 15
双色图的基本思路是用两种颜色的长图代表一个数据值,如图3.9右侧的放大图所示,在我们的示例中,数据值由两种近似的颜色表示,其中橙色和红色分别表示特定的数据值。这两种颜色让我们一眼就能知道特定数据值在75~100。然后,我们通过改变颜色的比例来表示准确值,即改变橙色和红色的混合比例。在这个例子中,我们用的是1/3的红色和2/3的橙色,这代表该数据值占75~100范围内的1/3,即数值在83左右。
图3.10强调了双色图的几个优点。第一,由于同时使用了颜色和图形长度作为视觉变量,因此节省了显示空间,这使我们能够查看到更多数据。第二,直观的颜色使寻找目标数据变得容易。第三,我们可以非常准确地找到独立数据值。总之,这是一个相当高效的可视化图形。
图3.10 用双色图表示二十年中每日的气温变化
n对n的图形。 前文曾提到过,通常情况下,我们需要同时处理多个数据值,那么也就意味着图形中会包含多个视觉变量。我们以离散图为例来进行详细讲解。
离散图由二维坐标系组成,表示两个数据变量值的范围。点位于第一象限中,用于绘制数据图形。从概念上讲,数据和位置相交的地方就是点。第一个数据变量的位置相对于水平x轴,第二个变量的位置相对于垂直y轴。如图3.11(a)所示。
为了处理其他数据,我们继续引入额外的视觉变量。例如,可以通过改变点的大小来绘制标量数据的变量,如图3.11(b)所示。对于面积较大的点,也可以使用不同颜色来绘制顺序数据的变量,如图3.11(c)所示。我们甚至可以考虑用不同的形状来替换点,绘制定类数据的变量,如图3.11(d)所示。总之,图3.11一共显示了五个数据变量:两个代表位置,一个代表区域,一个代表颜色,最后一个代表形状。
图3.11 通过位置、区域、颜色和形状绘制图形
随着各种视觉变量的加入,视觉效果也越来越丰富。从理论上来说,我们还可以加入更多的视觉变量,比如改变图形的纹理。然而,从实际运行的角度来看,这样做还是有一些局限性。虽然视觉效果越来越丰富,分析的便利程度也越来越高,但是在观察图形时所耗费的眼力和精神也开始随之增加。因此,不要一味地添加各种视觉变量,做到视觉效果和数据表现力之间相互平衡就可以了。在设计图形时,请谨记下面的话 16 :
完美并不是添加一切,而是获得一切……(圣埃克苏佩里〈de Saint-Exupéry〉,1939)
事实上,图形的绘制是设计可视化数据分析解决方案中最关键的环节之一,因为它会对表达性、有效性和高效性产生很大影响。然而,一个好的图形只是成功了一半,如何显示它同样也很重要。我们下一节将着重讲解这一点。
视觉编码造就符号,而符号则用来表示数据的图形,也是最终展现在用户面前的成品。现在的问题是,如何将可视化的数据用简单易懂的方式呈现为符号和图形?接下来,我们来讨论设计图形需要考虑的关键问题:图形用二维还是三维来显示?在处理大量数据时,是把所有的数据都显示出来,还是只显示我们的目标数据?如果需要同时显示多个图形,而每个图形都分别表示数据的某个特定视角或者透视图时,该怎么办?
在设计图形的环节,我们面临的第一个选择就是用二维还是三维来显示带有信息的图形。二维表示平面空间中的两个独立的轴:横向的是x轴,纵向的是y轴。三维表示非平面空间中,除了x轴和y轴以外,还有第三个z轴。
二维图形和三维图形都有各自不同的优缺点。二维图形更朴素,看起来更简单一些。但另一方面,人类的感知能力更容易自然地适应我们周围的三维世界。此外,坐标z轴还可以作为额外信息的载体。然而,三维图形也带来了在二维图形中很少出现甚至不存在的问题,例如图形间的遮挡和元素的透视扭曲。到底二维图形和三维图形哪个更好,迄今尚无定论。我们在使用的时候必须根据具体情况仔细做出决定,并且一定要考虑多个因素,包括要显示的图形数量、分析任务和可用的显示技术等方面。图3.12所示是一个附有二维缩略图的三维地形图示例。在第3.4节中我们将深入讨论二维和三维的含义。
图3.12 附有缩略图的三维地形图。
马丁·罗利格(Martin RöhIig)供图
为了使目标数据易于理解,清晰明确,所以我们在绘制图形时要遵循两个基本点:
1.传达准确
2.清晰详实
全图可以让用户纵览全局,了解包括全局图形和数据的属性。细节能让用户研究局部数据情况。对于小型或中型数据,可以在一张图中显示所有数据的概要和详细信息。而对于大数据来说,想要全面显示出来就很困难了。所以在显示大数据时,首先应该考虑整体数据的呈现,细节暂时可以忽略,而显示局部信息时,就必须要确保其完整性,并且只能限定于已被选定的数据。
在处理局部信息时,最基本的指导思想就是区分出目标数据和无关的数据。在具体操作中,可以将目标数据的符号显示详细,而其他无关数据的符号可以简化或者干脆忽略。具体来说,有两种方法可以应用:“全局+细节”和“焦点+背景” 17 。
全局+细节。 由全局图形和局部图形组成。全局图形中显示的是所有数据的大概情况,局部图形则显示选定数据的详细信息。为了方便起见,通常可以在细节图形中叠加一个缩略的全局图形。或者可以用多个细节图形合并组成一个全局图形。在图3.12中,主图形中显示了选定区域的三维地形的细节,而较小的窗口则显示了二维全局图,并突出显示了当前可见区域的细节。
焦点+背景。 在一个图形中整合全部数据细节,整合的方法有很多种,其中最经典的是放大焦点,缩小背景,然后修饰一下两者的边缘,让过渡更平滑。比如鱼眼畸变就属于这一种 18 。图3.13所示的就是鱼眼畸变在IRIS数据集表格的图形中的应用。图中可以看出,畸变使得焦点部分中的内容更容易读取,甚至可以显示出文本标签。
图3.13 IRIS数据集中的鱼眼畸变焦点部分放大能够容纳标签
“全局+细节”和“焦点+背景”都是能够完美显示大数据的总体情况和细节情况的有效方法。在全局+细节的方法中,用户必须在各独立图形之间建立连接。而焦点+背景的方法就避免了这个麻烦。然而,在解读信息量比较大的焦点+背景图形时,可能事先要多加熟悉,尤其是在涉及畸变部分的情况下。
当要分析的数据更加复杂时,就没办法在单个图形中一股脑地显示出数据的所有细节。面对这种情况,我们就要同时显示好几个专门的图形,而每一个都只需要显示特定的数据属性。那么,接下来的问题就是,该如何布置这些图形才能给用户传达全局的信息。
这个问题有两个答案:可以横向并排布置,也可以按顺序一个接一个地布置。从理论上说,这种方法可以对应到空间图形或者时间图形中。下面让我们来详细了解一下具体内容。
以横向并排的方式显示多个多数据的图形通常被称为多视角图形。后来,人们用术语“协同(coordinated)”来说明这种图形并不能独立存在,而是需要配合其他图形综合使用 19 。要特别指出的是,这里的“协同”也意味着如果操作其中一个图形,那么其他的图形也会同步变化。
图3.14中所示就是用于转换相同多变量数据的三种不同图形的示例。其中提到的可视化技术的具体细节将在第3.2节中为大家说明。我们在本章最后的第3.5.3节中将具体讲述如何使用多图形显示信息。
图3.14 用于分析多元数据的多图形协同
现在我们只讨论图形的空间布置。那么在布置的时候通常有两种方式,一是可以使用经专家设计的固定且有效的位置,二是可以使用由用户自己自由设计安排的位置。这两种方式都各有利弊,而且也都经过验证确实有效。
还有一种比较灵活的方式,就是把某些选项设定限制,然后其他的选项可以由用户来选择。比如在设定图形位置时不允许图形间发生重叠,也就是说,要么完全露出来,要么干脆就不选。这种设定可以通过将可用的屏幕范围划分为多个区域来实现,每个区域中允许包含一个或多个图形。这样一来,虽然允许用户灵活调整图形的大小以及在区域之间来回移动,但总体布局仍被限制在一块整体的区域内,不能发生重叠。
在一个显示器上布置多个图形并不是什么难事。但是,如果在多个显示器上布置图形的话,就非常考验用户的设计水平和空间利用能力了。在这种情况下,我们需要引入一些能够在显示器上自动布置图形的算法来减轻用户的工作量。这个内容我们将在第六章中详细说明。
另一种图形排列方式是基于时间顺序排列。也就是说,各个图形并不是同时显示,而是一个接一个地显示。具体说来,是根据每一段时间的变化按顺序显示图形,最后的成品效果更像是动画片或者幻灯片。
基于时间顺序排列的图形优点是,每个图形都可以充分完整地显示出来,根本不用劳心费力地分割有限的显示空间。显而易见,基于时间顺序排列特别适合表达数据的时间属性,同时也有利于用户在不同数据属性间切换。
然而,快速、连续地向用户显示图形也存在一些局限性。比如,每一个图形的显示时间都是有限的,所以用户在仓促间可能很难搞清楚所有的信息。尤其是在图形特别多的情况下,用户可能还没来得及消化上一张图的信息,紧接着又切换到下一张图,这样用户很有可能错过很多信息,最后完全跟不上图形的切换。因此,我们就要加入一些交互式的控件,比如暂停、快进、快退等功能来便于用户操作。
本节主要介绍了视觉编码的基本知识,其中包括如何将数据对应到视觉变量,如何将图形显示给用户等方面。现在大家已经了解了可视化图形的大概操作,接下来我们将讨论如何使用视觉变量和添加视觉符号来转换不同类型的数据。我们将从多元数据(多变量数据),也就是具有多个属性的数据开始。