为了设计出具有表达性、有效性和高效性的交互式可视化数据分析解决方案,我们必须仔细研究有关的影响因素。这些因素涉及需要分析的对象(即数据)、分析的目标(即目标和任务),以及分析的条件(即所涉及的人力资源和技术资源)。
在计算机语言中,数据是以二进制的形式出现的。如果不知道如何去使用它们,那它们就一文不值。如果想要使数据变得有意义,那么我们不仅需要数据本身,还需要掌握相应的编译方法。因此,数据特征是我们在选择或者创建分析方案时需要考虑的第一个因素。
数据域有什么特征?所有的数据值都来自数据域,而数据域又是描述数据属性的一组值,其中包括数据类型、数据长度、小数点位数以及取值范围等。
数据域的一个重要特征就是它的字段。字段中存储着域中数据值的信息,其中就包括数据值之间的运行关系等参数。我们可以把数据域想象成一个多层级结构。在最顶层,可以区分数据的性质和规模。在第二层,可以进一步将数据的性质区分为定类数据和顺序数据,将数据的规模区分为离散数据和连续数据。表2.2中统计了一些不同数据间的运行关系。接下来,让我们仔细看一看这些不同的数据。
表2.2 不同数据间的运行关系
定类数据: 只能对事物进行平行的分类和分组,其数据表现为“类别”,但各类别之间属于并列关系,无法进行比较,是数据中最基础、最简单的一种。我们可以计算定类数据的出现频率。
例如:名字就属于定类数据(Anika、Ilka、Maika、Tilo等)。
顺序数据: 数据间除了并列关系之外还存在顺序关系。我们通过顺序数据来比较值的大小(多少、强弱、级别的高低等),还可以为数据排序。
例如:根据年龄范围排序,儿童、青年人、中年人、老人就属于顺序数据。那么我们就可以说儿童的年龄小于成人的年龄。
定类数据和顺序数据属于类别,表达的是数据的属性和特征。接下来我们看一看可以通过计算产生变化的数值型数据。
离散数据: 属于数值型数据,其数据域可以等同于整数Z的集合。这意味着我们可以计算数据离散值,并通过距离函数确定任意两个值之间的差异。
例如:计算两天分别看医生的人数。如果一天有34人去看医生,而另一天有23人,那么我们自然就可以算出两天之间看医生的人数有11人的差异。
连续数据: 也属于数值型数据,其数据域可以等同于实数R的集合,因此,连续数据的数值是不可数的。我们也可以将其认为是高密度数据,也就是说,任意两个数据值之间都存在第三个数据值。这个特征是对数据赋予插值的必要条件。
例如:气象站在测量每小时的温度值。8:00和9:00分别测得两个温度值为10.6℃和13.2℃,那么我们可以推算出8:30(理想天气条件下)的温度值约在11.9℃。
大家要注意,数据值的种类特征有时候不太明显。例如客户电话号码或邮政编码,我们可能会认为它们是离散数据。然而,正因为它们存在并列性且相互间无法比较,所以它们实际上是定类数据。
在本书接下来的部分,我们来看一看不同规模的数据分别有什么样的图形要求。例如,对于顺序数据,图形中必须要能够清楚地传达数据值的顺序,但不会表现出数据值之间的差异。在第三章中,我们将了解更多将不同规模的数据进行图形化的方法。
我们可以通过数据域的规模来获取单个数据值的特征。如果将多个数值型数据组合起来,那么就可以将其进一步区分为标量数据、矢量数据和张量数据。
标量数据只含有单个值,该值只有大小。例如前面例子中提到的温度值。矢量数据则含有多个值,既有大小,也有方向。例如物理学中描述物体运动的速度矢量。
我们最后来看一看张量数据。张量数据包含许多方向,并且规模庞大。张量的顺序决定了它能够承载多少信息。实际上,标量和矢量都属于张量。通俗理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,而矩阵则可以被视为二阶张量,高阶张量则用多维矩阵阵列表示。以二阶应力张量为例,3×3矩阵可用于表示形变材料中某一点所受到的应力。
本书中我们主要讨论标量数据。矢量数据和张量数据的交互式可视化分析是一个非常具有挑战性的课题,感兴趣的读者可以参阅相关文献 2,3 。
在上文中,我们引入了数据域的概念来表达单个数据段。然而用交互式可视化数据分析方法来分析单个数据段根本没有任何意义,我们的目的是要分析整组数据。在实际应用中,数据常常十分臃肿且混乱不堪,并且包含有许多其他信息,要分析如此混乱的数据无异于海底捞针。因此,我们最好将数据以结构化的形式存储或传输。
数据表格就是这样一种格式。它由行和列组成,其中列表示数据的变量。每个变量都关联到一个数据域,该数据域指向有可能出现在列中的值。根据这些出现的值,我们可以看出值覆盖的范围。
行表示数据元组。我们可以把它理解为可见实体属性的数据组。数据组中包含各变量所在域的值。根据使用环境的不同,它们也被称为观察值、记录、项或对象,通常情况下统称为数据组。
特别是在数据实体存在关联的情况下,这种关联可能也会定义其他的层次结构。层次结构是一种根据不同情况(或抽象概念)以自上而下的金字塔结构组织数据的常见方法。更通俗地说,数据可以建模为图形,节点和边分别表示数据实体及相互之间的关系。社交网络和生化反应网络就是图形结构化数据的例子。层次结构和图形都可以存储于两个数据表格中,一个用于实体数据,另一个用于关系数据。
另一种以结构化方式存储数据的方法是数据网格,通常应用于流量图和体积图等。
以上概念并不在本书讨论之列,请感兴趣的读者自行参阅相关文献 4,5,6 。
上文提到的数据表格用于搭建数据值组,然而,仅靠这些是远远不够的,我们还要考虑到变量可以覆盖全部数据空间的特性。
变量分为自变量和因变量。其中自变量对应的是数据的空间维度,因变量对应的则是数据属性。用专业术语来说,我们可以通过函数来表示它们的从属关系,示例如下:
f:(D 1 ×D 2 ×…×D n )→(A 1 ×A 2 ×…×A m )
在此函数中,D i (i=1,2,…,n)表示维度(自变量),A j (j=1,2,…,m)表示属性(因变量)。f代表参照空间中的某个点与属性空间中的某个数据点一一对应。示意图见图2.2。
图2.2 参照空间和属性空间的从属关系
参照空间中的一个点恰好对应属性空间中的一个点
在交互式可视化数据分析过程中,通常要将函数的从属性以可视化图形的方式表达出来。例如,假设用户的数据包括在不同地点和时间观测到的温度和气压:(纬度×经度×时间)→(温度×气压)。用户可能会研究温度和气压值是如何随着时间发生变化的,或者极值出现在什么经纬度。为了解决这个问题,我们一定要让可视化图形能够如实地表达维度和属性之间的从属关系。请注意,在分析某些数据时,函数的从属性就不重要了,例如分析数据值区间的综合信息。图2.3为本节内容示例。
图2.3 数据特征的关键概念
借助于数据表以及划分维度和属性,我们现在可以研究数据的另一个重要特征:大小。表2.3所示是一组带有维度、属性和元组的数据表格。数据组的大小取决于以下三点:维度数量(n),属性数量(m),元组数量(k)。
表2.3 数据表格
通常来讲,我们可以认为当前处理的是n维度m个变量的k个的元组数据。拥有多个维度的数据叫作多维数据,通常也可称为高维数据。属性与之类似,如果数据只有一个或两个属性,我们分别称为单变量数据或双变量数据。而拥有多个属性则称为多变量数据。
显然,m、n和k的值越大,对其进行数据分析就越具有挑战性和复杂性,我们也就越需要采用更加先进的技术手段来分析。
现在的问题是,如何才能确定某个数据组是否属于大数据组?有没有一个标准可供参照?其实有一个方法可以解决这个问题,那就是搞清楚影响人机之间信息传递的瓶颈。我们可以从以下问题中得到答案:
● 计算机能存储多少数据?
● 内存中能存储多少数据?
● 屏幕能容纳多少数据?
● 我们能搞清楚多少数据?
对于这些问题,如果任何一项回答超过了既定限制,我们就可以认为该数据组属于大数据组。并且越快突破限制,数据组就越大。无论如何,我们都要想办法突破这些瓶颈。在这种情况下,我们可以在交互系统或计算机方面想办法。在第四章和第五章里,我们会对此进行更为详细的讨论。
至此,我们已经了解了如何从数据中提取数据属性,并且通过这些属性推测相关联的数据域。我们还可以从变量中筛选出哪些是自变量,哪些是因变量。当然,也能够通过计算出数据组的变量和元组来得出数据组的大小。接下来,我们将要面对一个无法直接获取,但又必须要知道的属性:数据范围。
想要将数据转化为可视化图形,那么必须要知道数据的范围。数据范围的意思是数据的有效范围。图2.4表示了三种类型的数据范围:
● 全局范围:参照空间中所有数据皆为有效数据。
● 局部范围:参照点及其附近区域的数据为有效数据。
● 点范围:参照点的数据为有效数据。
图2.4 不同数据范围的有效程度
我们无法根据数据集本身来确定单个值是全局有效、局部有效还是点有效。所以我们应该对数据做一个说明,以提前确定其有效范围。对于某些应用领域,我们可以假设一个有效范围。以地理空间数据为例,根据托布勒的地理学第一定律(Tobler’s First Law of Geography)可知,在某一点测量的数据与该点附近的数据有关联,该数据属于局部范围有效 7 。可我们怎么才能精确地划分出局部范围?怎么才能从图形的角度表达数据的局部有效性?
以图2.5所示的三种不同的水质检测结果图形为例。数据范围用从绿色到红色之间的颜色来表达,其中绿色表示高质量,红色表示低质量。图2.5(a)忽略了局部范围,只显示了点范围。因此,这个图形并不直观,无法让用户清晰地理解。
图2.5 水质检测结果图形
在图2.5(b)和图2.5(c)中,可以看出引入插值强化后的图形具有更强的表现力。我们通过为所有像素指定颜色的方法来造成一种密集的视觉效果,使数据的局部范围更加清晰明了。图2.5(b)使用了最近邻插值,用于将空间划分为离散的多边形区域,使得我们可以比较清晰地理解各地的水质情况。但是,各地区之间过渡得很生硬,没有连续性,而水是流动的,不会变化得如此突兀。于是,我们就在图2.5(c)中使用了谢泼德插值 8 。现在图中各区域交界处就已经变得十分自然了,也更符合我们的要求。
请大家注意,问题的关键在于如何插值离散数据。我们有多种方法来实现这一点,每种方法都有其对应的参数和结果,所以需要根据实际情况来选择。
前文所述的所有数据属性(域、结构、空间、大小和范围)都应该随实际数据一起提供,这些属性也称为元数据,通俗地说就是关于数据的数据。在理想条件下,在获得数据的同时也应该获得其元数据,以便于后续可以高效清晰地分析实际数据。
此外,元数据中还可以(也应该)包含关于数据演化的过程(程度、周期、相关事件等)的信息 9 。
从数据已经发生的事件中,我们可以获知该数据是如何被收集、观察或模拟的。在解读并复盘分析结果时,往往就需要用到这种关于数据来源的信息。数据质量评价指标就是其中一个例子,该指标用于详细表述数据的符合程度。与之密切相关的一个概念就是不确定性数据,它用来衡量数据是否真实有效,或者在多大程度上存在真实性。
数据当前状态的元数据基本上已经确定了数据的存储方式和检索方式,这就涵盖了前文提及的所有数据项和涉及数据格式的信息。例如,元数据可以告诉我们某变量是否含有丢失的数据(或空值),如果有,那么其特征是什么。
元数据中也包含数据的未来发展趋势。其中主要是数据可操作性的信息。这一类实用的数据信息通常不会明确表现出来,但是却意义重大。例如,我们之前提过的数据插值就很复杂,那么此时就可以通过元数据来获取关于插值可行性和操作方案的信息。
总而言之,元数据与目标数据同等重要。图2.6所示即为元数据的相关概念。虽然到目前为止,我们依旧停留在理论阶段,但在下一节中,我们将通过常见的数据种类来模拟其在实际中的应用。
图2.6 用于分析数据特征的元数据
接下来我们来看一看实际应用时常见的数据类别。首先定义以下几个字母:A代表(一个或多个)数据属性,T代表时间,S代表空间,R代表数据之间的结构关系。我们根据以上四个方面来区分不同类别的数据。图2.7展示了更多细节和示例数据,其中箭头符号→用于指示参照空间和属性空间之间的函数从属关系。
多元数据: 多元数据由数个数据属性A组成。通常,数据分析涉及数据值的分布情况和数据属性之间的关联性。例如,各种联赛中运动员的统计数据。
临时数据: 临时数据的参照空间由时间维度来决定,并且随着时间T的变化,我们会观察到一个或多个随时间改变的属性A。我们通过数据分析趋势和循环等行为来了解属性如何随着时间发生变化。例如,股市大盘的实时指数。
空间数据: 如果数据出自参照空间,那么就可以称之为空间数据S→A。常见的有二维空间数据和三维空间数据。对空间数据的分析要集中于空间图形、空间群和热点等方面。例如,矿产资源的分布情况与储量。
时空数据: 通常来说,空间数据也存在着随时间改变的特性。因此,我们可以将时空数据表述为S×T→A。分析此类数据需要结合空间和时间的因素,例如随时间推移而发生变化的空间聚集或者周期性循环的热点等。时空数据在气象研究中比较常见。
图2.7 展示不同类别数据的文氏图
图形数据 :图形数据包含数据实体、节点、实体间的关系以及边。首先,我们需要理解图形中已存在的结构信息R。另外,也可以将图形中的节点和边与要分析的数据属性相关联,即R→A。甚至可以将图形与空间变化或时间变化相关联,在这种情况下,可以分别用R→S×T×A或者S×T→R×A来表示。例如,用于模拟和预测地球气候现象的气象网络就是其中最具代表性的一种。
上述数据种类具有较强的通用性,这使得我们在实际分析时能够将信息代入其中。例如,对于文档或文档集的分析,就可以基于属性维度为其建模,属性维度的关系为R→A。对于医学影像的分析可以用S→A表述,其中S代表像素坐标,A代表像素颜色。同样的道理,对于流量数据的分析可以用S→A(如果数据存在时变性则用S×T→A)来表述,其中S代表二维或三维坐标空间,A代表矢量组成部分。
如果我们要分析的是计算机程序或者多线程处理等复杂情况,那么就先要将任务分解,然后再依照所需分别代入A、T、S和R。
以上就是关于通用数据类别的研究,至此我们结束了对数据特征的讨论。接下来的内容是关于分析任务的学习和讨论。
在前文中,我们已经了解了交互式可视化数据分析的对象,也就是数据。本节中将研究分析任务,即目标。分析任务之所以重要,有两个原因。第一,它可以确定数据的哪些部分与分析相关。第二,它可以用于对应第2.2节中介绍的有效性标准。
请看这个示例。图2.8所示是两幅具有相同地理空间数据的彩色图。其中图2.8(a)用浅黄色到绿色的色域范围渐变来增强视觉效果。图2.8(b)中,极值使用对比度较强的颜色,而中间值用渐变灰色来表示。这种设计有助于用户在图中确定最小值(蓝色)和最大值(红色)。这个例子充分说明,我们需要根据分析任务来选择合适的可视化图形特征。
图2.8 不同的颜色特征适用于不同的分析任务
由此可以确定,特定的可视化图形特征对应特定的分析任务:数据+图形特征→分析任务。反过来也说明特定的分析任务对应特定的图形特征:数据+分析任务→图形特征。而交互系统的设计和分析计算也同样取决于分析任务。所以,分析任务是决定设计方案和技术方法的关键因素。
然而,我们都知道,数据分析存在许多种情况,所以很难赋予它们一个通用的标准。一项任务通常只负责分析其中的一个方面,这方面所涉及的特定部分数据即是任务目标。每项任务都有多种完成方式,在下文中,我们将更详细地研究任务的目标、待分析问题、指标项和途径。
代表分析的意图。因为实现目标通常会涉及分析的几个步骤,所以其具有全局性。基本上,探索、表达、解读、确认和展示数据都属于目标 10,11 。
探索。 目的是对数据进行初步了解。例如发现多维度数据的发展趋势或者检查同类数据的异常值。另外,还需要注意某些常见模式或趋势是否缺失。更通俗些理解,我们可以称为“一见便知”的自由检索法,或者像可视化数据分析领域的先驱所说的 12 :
……找到已知的,发现未知的。(托马斯和库克,2005)
表达。 目的是通过相关的数据元素表达出观察特征的一种标准,例如,异常值可以通过其特征值和时空情况(如果存在的话)来表述。合理的表述可以用来作为安排分析步骤的基础,尤其是可以提供给参与后期验证分析结果的团队成员作参考。
解读。 目的是区分所有额外的数据,并找出导致该情况的主要原因。关于这一点,有几个需要厘清的问题:让数据进行自我检查有意义吗?我们对数据中的垃圾信息理解有偏差吗?结果是否会在整个数据中不断重复?我们看到的是否只是在概率极低的情况下才会产生的突发异常值?如果该结果再次出现,它会不会变成在相同的条件下常态化出现?或者它的出现干脆就是随机的?
我们可以利用解读的情况来获得预期的分析结果和造成意外事件的线索,同时还可以更加深入地了解数据,并对其进行假设。
确认。 目的是验证假设。与探索不同,确认属于一种定向搜索。我们需要找到某些具体的证据来佐证或推翻某项假设的有效性、普遍性或可靠性。为此,我们可以使用其他的数据图形或者重新调整参数等方式来验证结构是否相同。
展示。 目的是表达经过确认的分析结果。解读和确认是让我们自己明白分析结果,而展示则是为了让别人能明白我们的分析结果。其本质上就是给别人讲述一个关于数据、分析和结果的故事。我们可以在故事中加入情绪和语气,也可以让分析结果自己说话,用直观的图形来科学地展示分析流程以及准确的结果。而受众既可以是听演讲的听众、文章的读者,也可以是参与讨论的学者。
探索、表达、解读、确认和展示可以理解为数据分析过程的后续阶段。我们首先要探索数据并获取信息及做出假设,其次要对获得的信息进行解读,然后再证实假设的有效性。最后,展示经过证实的分析结果。
从陌生的数据中获取信息、证实信息并将结果呈现出来,伴随着这套流程,其中不确定性也会逐渐增加,这一点请大家注意。
上述内容概述了数据分析的不同目的,但没有做详细的说明。接下来,我们会对这一问题进行具体讨论。
待分析问题是指特定分析步骤中的具体诉求。不同的分析场景有着不同的待分析问题 13 。一般来说,这里分为两个基本类别:基本问题和全局问题 14 。
基本问题。 面向的是独立的数据元素,其中包括一个或多个数据元素,重点在于每个数据元素都要单独研究。基本问题涉及如下几点:
● 识别:值是什么?
● 定位:值在哪儿?
● 对比:多还是少?
● 排序:有顺序吗?
● 联系:它们有关系吗?
● 区分:导致它们不同的原因是什么?
全局问题。 面向的是多个数据元素,主要特征是对应成组的数据元素,而非独立的数据元素。以上几点问题在全局问题中同样适用,另外还包括如下几点:
● 群组:它们属于同一个群组吗?
● 关联:它们之间有什么关系?
● 趋势:它们的变化有章可循吗?
● 循环:它们是否呈周期性循环?
● 异常:它们是否存在异常值?
● 特征:它们的特征是什么?
请注意,这两个列表中的问题仅仅是冰山一角,我们还可以根据实际情况提出更多的问题。如果读者有兴趣,请自行检索本章末尾处的参考文献。
总而言之,这些问题可以帮助我们更具体地了解数据,然而却并不能告诉我们到底该怎么做。关于这一点,我们将在下文中进行详细讨论。
通常情况下,并不是所有的数据都重要。我们的目的是要在繁杂的数据中找到需要了解的部分,主要包括需求数据和数据粒度。
预先确定指标项能够缩小查找范围,精简不需要的数据。所以,我们是想确定数据值,还是摸清它们在特定空间或时间中的分布情况?是想识别出整个数据集中的单个数据值,还是某个特定数据分组?是想分析全局的变化趋势,还是局部的变化情况?
需求数据。 具体来讲,指标项即代表需求数据,也就是与任务有关的数据分组。理论上说,我们可以依据预计的数据变量和数据元素来创建一个分组。那么指标项既可以涵盖数据空间中的所有变量,也可以只覆盖特定变量。只包含特定变量的图形就称为数据映射。
通过筛选特定的数据元素,可以进一步缩小数据范围。为此,我们可以设定某些条件,只让符合条件的数据元素显现出来,以此来助于分析,通过这种方法将所需的数据限定在特定值范围内。只包含特定数据元素的图形就称为数据选择。
图2.9所示,映射+选择=指标项。请注意,指标项不一定必须像图中一样是封闭的数据块,更多的情况下它是由分布在数据空间中的许多个数据块组成。
图2.9 映射+选择=指标项
从图中我们可以看出,指标项数据的规模要远远小于全局数据,甚至可以仅仅是全局中的一个单独数据元素,例如识别参照空间中的值等基本情况。如果指标项是数据分组,那么解决基本问题或全局问题就取决于数据元素是独立数据还是数据块。涉及所有数据元素的指标项通常属于全局问题。
数据粒度。 对于不同细化(或抽象)程度的数据结构,指标项的特征就是其粒度。粒度代表着任务的抽象程度。
低精度匹配(模糊匹配)可以用来获取数据的总体情况,可以称之为粗粒度。在粗粒度情况下,任务设计就要集中在数据间的关联性或者总体趋势等基本特征上。
与之相反,高精度匹配(精确匹配)称为细粒度。在细粒度情况下,我们可以获取数据基本特征中体现不出来的各种细节。例如,在平稳的发展趋势中出现的小震荡等。
现在,我们了解了如何在特定粒度下研究数据。接下来介绍一下操作流程。
处理这些数据的方法有很多种。比如,如果我们需要寻找某个特定的数据元素,而且事先知道该数据元素的具体信息,我们就可以根据信息直接查询。但是,如果事先并不清楚具体信息,那么就很难直接找到。在这种情况下,我们就要通过查看数据图形来寻找。所以,直接查询和查看数据图形是适用于不同情况的分析方法。
通常来说,途径代表着分析的方法。从概念的角度来说,途径可以分为可视化途径、人机交互途径和计算机计算途径。
可视化途径: 意思是目视查看,实际上就是用眼睛观察。例如,我们可以直观地从图形中不同的颜色标识来看出相应的数据值。
人机交互途径: 意思是人机之间的信息交换,也就是用手或者语音来操作系统以获取信息。延续上一个例子,我们可以通过将鼠标光标悬停在数据值上的方式,通过显示精确值的标签来识别数据值。
计算机计算途径: 意思是常规的计算机计算,也就是用计算机来得出需要的结果。例如,使用特定算法对同一类型数据进行分析,然后归类分组。
以上每一种途径都有自己的概念和操作方法,在第三、四、五章中我们会分别讨论。
尽管如此,可视化、人机交互和计算这三种途径通常会被协同应用,这样就可以充分发挥出人类的认知能力和计算机的运算能力。让我们来举一个搜索异常值的例子。首先,我们要对数据进行目视观察,选择其中相关的部分。其次,利用计算机分析所选数据与其他数据元素的差异来检查异常值。最后,还要目视检查异常值有没有正常显示出来。
在本节中,我们从分析目标、待分析问题、指标项数据和分析途径等方面对分析任务做出了说明,其中包含了为什么要分析数据、指标项数据是什么、要找的数据在什么位置以及如何实际操作等问题。图2.10所示是相关的术语。我们可以用这些术语来制订分析方案,比如通过标签来显示低数值的数据元素组。表2.4中所示就是相关的示例。这种任务说明可以用来辅助分析规划或交互式分析。
总之,任务的特征和数据的属性是两个重要的影响因素。它们共同构成了影响可视化数据分析方案的前期基础 15、16 。我们在下一节中还会讨论其他的因素。
图2.10 分析任务的目标、问题、指标项和途径
表2.4 任务示例
为了提高交互式可视化数据分析的效果和效率,我们还要考虑到分析环境的因素。首先就要确定用户和环境,从这个角度来说,环境包含实际操作者以及构成分析环境的技术层面因素。
有关用户和技术的全面描述已经超出本书范围,所以本节仅作简略介绍。
从用户层面来说,有以下几个相关方面:
人为因素。 用户个体的特性是一项重要因素。我们的眼睛能看到什么?我们的四肢能做到什么?交互式可视化数据分析方案的设计必须要围绕人类的能力来开展。比如在操作大型触摸屏时,大多数用户根本没办法十分精确地进行点选。
此外,人和人也都不一样。所以我们在设计时不光要考虑用户的共同特性,还要考虑到他们的个体差异。比如说,在面向色觉缺陷人群时,我们可以通过调整图形颜色来适应他们的视觉能力。
用户的背景及专长。 用户个体的认知情况和专长都各不相同。可视化分析专家擅长设计交互式可视化分析方案和定期检查各种数据,但是他们在不熟悉的分析领域可能就会束手无策。
另外,不同领域的专家具有相应的专业素养,会专注于自身专业方面的内容。他们认可的是工具适应人,而不是人适应工具。所以无论在何种情况下,即使是有更好的代替方案,他们在处理问题时还是更倾向于使用自己习惯的方式方法。
而对于普通用户来说,他们就更喜欢简单易操作的交互式图形而不是复杂的可视化分析系统。因此,面向普通用户的系统必须要直观、易懂和易操作。同时也可以利用系统辅助功能对用户进行傻瓜式引导,以此来提高系统整体的易用性。
应用领域。 我们只有充分了解应用领域中需要解决的问题,才能开发出合适的分析解决方案。除了解决应用领域问题以外,还需要考虑到应用领域中的某些惯例。比如美国地质调查局(USGS)在地质图中指定了使用颜色的范围,因此,地质特征就只能用这些颜色来表示,其他颜色一概不被接受。
应用领域也严格限制了分析系统的设计。例如,医疗诊断系统在用于临床应用之前,一定会经过严格的测试以保证其已具有了极强的可靠性。
单用户操作和多用户协同。 数据分析可以由单个用户独立操作或由多个用户合作执行。在单用户情况下,分析方案可以根据个人的需求和偏好进行调整。然而在多用户协同的情况下,我们就需要考虑更多的方案,还要对这些方案进行灵活地调整,以便符合所有参与者的需求。此外,单用户操作可以专注于用户和计算机之间的沟通,而多用户协同还需要考虑到用户之间的沟通。例如,共享图形和研究讨论等情况。
为了解决在何处分析数据的问题,技术导向层面与以下几个因素有关:
计算资源。 使用计算机来分析数据,即代表使用了计算资源。在交互式可视化数据分析中,我们需要资源来创建和渲染图形,最理想的情况是该图形可以同时具备高质量和高帧率。而对于较大的数据,还需要额外的计算资源进行预处理。
根据当前的计算资源和实际分析目标,我们还要在不同的需求之间达到平衡。比如当用户操作系统时,实时的视觉反馈就相当重要。因此,为了提高操作系统时的系统反应速度,可以适当地降低图形的分辨率。诸如此类的情况还有很多,要根据实际情况做出权衡。
显示技术。 随着科技的发展,现在已经有了多种显像技术,而且功能和用途也都大不相同。比如手机上用的小型显示屏、大型的百万像素级显示墙,以及高对比度、宽色域的专业制图显示器。
一般来说,各种显示器的区别在于其屏幕尺寸、纵横比、分辨率以及色域色准。物理尺寸在很大程度上决定了显示器是否适用于特定环境。像素和分辨率决定了屏幕能显示多少数据。显示器的纵横比决定了数据的布局。高容积的色域决定了图形的颜色。
输入模式。 输入模式也是分析系统的特点之一。它决定了人机交互的方式和输入准确性。通常情况下会使用常规的鼠标和键盘来进行操作。
现代的显示屏已经可以支持触摸操作了。触摸屏的优点是可以实时进行互动,也就是用手直接在屏幕上点选对象。缺点则是点选小尺寸的对象时会不太准确。
在使用大型显示墙时,过大的显示面积使鼠标或触摸操作都不大实用。所以可以利用体感追踪技术或眼球追踪技术来替代鼠标或触摸操作。
正如上文所说,交互式可视化数据分析涉及很多方面。虽然我们逐项都进行了说明,但不同方面间也存在很多互补性。例如,用大型显示墙显示大量的数据时,我们还必须考虑到所需的更多资源,以及用户能否使用符合人体工程学的方式进行便利的操作。再举一个例子,如果我们打算绘制一幅颜色密集的可视化图形,那么首先就得有一台高色域显示器,然后还要避免颜色失真。
从本节中我们可以明确,数据、任务和环境是三个主要的影响因素。它们不仅可以用于设计交互式可视化数据分析方案,还可以确定方案是否符合第2.1节中提到的标准,即用户对数据的解读能力和效率,以及资源使用的平衡程度。
简单总结一下:如果想要设计一个直观明了且高效的分析方案,那么首先应该知道要研究哪些数据、要执行哪些任务,以及分析环境是怎么样的。这些问题的答案越全面,越有助于分析方案的设计。
接下来我们将示范如何将数据、任务和环境应用于实践当中。为了使示例更易懂,我们将简单地就其中的数据和环境进行说明,而对分析过程则会着重进行讲解。
数据和环境。 示例中会使用气象学时间线,该时间线以时态数据T→A为例。由气温、气压、风速、日照时长、云量、降水量和降水类型等属性组成的气象数据为多变量数据。具有连续性、离散性和标称的标量是单个值。例如,气温有连续性,日照时数有离散性,而降水类型则是标称。我们要调查超过23725天的每日测量值,总计相当于大约65年的数据。
简单起见,我们假设由单个用户使用配备了常规显示器和传统鼠标键盘的台式计算机来分析数据。虽然这个示例得到了专注于气候变化领域的气象学专家的帮助,但我们对此不施加任何限制,这也是为了保证示例简单易懂。
任务。 现在假设我们的目标是探索数据,更具体地说,我们想要调查数据中是否存在根据季节变化而变化的部分,这就意味着我们要分析一个包含所有数据的天气问题。为了尽量缩小数据范围,我们首先将重点放在三个属性上:日照时长、气温和云量。
根据图2.11中所示,我们将借助可视化图形完成这项任务。每一个目标属性都有一张专用图,每张图的x轴显示月份,y轴显示特定属性,每一个点代表月份对应的属性。
图2.11 某地全年气象数据
请注意,图中的x轴仅显示了从1月1日至12月31日一整年的数据。也就是说,点的坐标由日期来决定。从这个角度讲,这相当于将几年的数据都反映到某一年的统计中。
因此,这个类型的图形非常适合分析某项气候数据随季节性变化的趋势,而且我们从中可以直观地看出各项信息。图2.11(a)中,日照时长在6月21日(夏至)达到最大值,在12月21日(冬至)达到最低值。
图2.11(b)中可以看出,气温原则上是随日照时长变化的,但约有一个月的延迟,这被称为季节性滞后效应。虽然到目前为止还没有任何令人兴奋的内容,但图2.11(a)和图2.11(b)仍然帮助我们观察到了预期的结果。这充分说明了数据的有效性和图形的表现力。
但是我们还可以发现一些其他内容。请看图2.11(c),一年当中的日平均云量图(从低云量到高云量分别从0/80至80/80的递增量来表示)。乍一看分布很平均,其中冬季云量值较高。如果进一步仔细观察,我们会发现图中有一条横向区域,该区域分布的点要比其他地方少。
这能不能说明某种特定的云量值很少出现呢?随着问题的深入,我们的任务也从观察数据中的季节性变化趋势转变为云量值研究。可能大家还在一头雾水:这条线在哪儿呢?请仔细观察y轴50/80稍微往上一点的位置,就是平均云量值52/80附近的这条线。
接下来,我们要确定这个现象到底重不重要,或者它干脆就是一堆数据噪点,而我们却对其做了过多的解读。这意味着我们的任务已经从研究云量值微妙地转变为解释云量现象了。为此,我们研究了云量值的频率分布,即单个值在数据中出现的频率。
我们用可视化数据分析法来分析这个情况。具体将使用直方图,如图2.12所示。在直方图中,y轴代表在目标频率上的单个数据值,x轴代表从0到80的共81个云量值,每一个云量值对应的高度条就是该云量值的出现频率。通过比较这些高度条,我们发现52/80和12/80的值比其他值都要少。由此可以证明,我们观察到的结果并不是一个单纯的视觉幻想,而是真实的数据结果。
最后,我们还要证明这是一个有数据支持的发现,而不是随便找个图来敷衍了事。为此,我们要在不同气象站获取类似的云量图,如图2.12(b)所示。果然不出所料,结果如我们预期的一样。这种情况不仅在52/80和12/80中再次出现,而且影响范围看起来还覆盖了2/80、22/80、32/80、42/80等区域。目前,我们只能对这种现象的成因进行推测。如果想要得出系统的结论,就要对其做进一步研究。这个任务说明了可视化数据分析是一种无具体目标的开放式过程,其中涉及很多不同的分析任务。我们通过上面的例子为大家实际演示了各种影响因素。接下来,我们将继续讨论有关交互式可视化数据分析基本过程的概念。
图2.12 显示云量值的直方图