Skip to content

Latest commit

 

History

History
371 lines (256 loc) · 45.3 KB

23 - 可视化.md

File metadata and controls

371 lines (256 loc) · 45.3 KB

23 - 可视化

计算机图形学的一个主要应用领域是可视化,其中计算机生成的图像用于帮助人们理解空间和非空间数据。当目标是在问题没有充分定义以供计算机通过算法处理的情况下增强人类能力时,可以使用可视化。 如果完全自动化的解决方案可以完全取代人的判断,那么通常不需要可视化。可视化可以用来在探索一个完全不熟悉的数据集时产生新的假设,在一个部分理解的数据集中确认现有的假设,或者向另一个受众展示关于一个已知数据集的信息。

可视化允许人们将认知卸载到感知系统,使用精心设计的图像作为外部存储器的一种形式。人类视觉系统是大脑的一个非常高的带宽通道,在平行和前意识水平上发生了大量的处理。因此,我们可以使用外部图像作为替代来跟踪我们自己的头部内的事物。

当我们将数据集视为文本列表时,在低水平认知中,我们必须阅读单词并将它们与先前阅读单词的记忆进行比较。仅使用认知和记忆很难仅跟踪十几个主题,更不用说整本书中的数百个主题了。 识别邻域的高级问题,例如找到距离目标主题 Paradoxes 两跳的所有主题是非常困难的。 图 23.2 显示了与节点链接图相同数据集的外部视觉表示,其中每个主题都是一个节点,两个主题之间的联系直接用一条线显示。沿着连接线,通过在图像周围移动我们的眼睛是具有最小认知负荷的快速低级操作,因此可以实现更高级别的邻域查找。节点的位置和它们之间的链接路由由点图绘制程序自动创建。

我们将数据集属性的映射称为视觉编码的可视化表示。 可视化的核心问题之一是从可能的视觉表示的巨大空间选择合适的编码,考虑到人类感知系统的特征、所讨论的数据集和手头的任务。

23.1 背景

23.1.1 历史

人类在使用静态图像传达意义上,有着悠久的历史,可以追溯到三万年前最古老的洞穴画。我们如今还在进行视觉交流,从餐巾纸背后的粗略草图到广告的圆滑图形设计。 几千年来,制图师们一直在研究如何绘制能代表我们周围世界的地图。第一个抽象的非空间数据集的视觉表示是在 18 世纪由 William Playfair 创建的。

尽管 150 多年前我们就有能力创造动态图像,但在过去的几十年里,由于快速计算机图形硬件和算法的广泛应用,交互式地创造动态图像是一个较新的发展。微小数据集的静态可视化可以手工创建,但计算机图形可以实现大型数据集的交互式可视化。

23.1.2 资源限制

在设计可视化系统时,我们必须考虑三种不同的限制:计算能力、人的感知和认知能力以及显示能力。

与计算机图形学的任何应用程序一样,计算机时间和内存是有限的资源,我们经常受到的硬件约束。如果可视化系统需要提供交互式响应,那么它必须使用可以在几分之一秒内运行的算法,而不是几分钟或几小时。

在人的感知和认知能力方面,记忆和注意力必须被认为是有限的资源。人类的记忆是出了名的有限,无论是长期回忆还是短期工作记忆。 我们在视觉工作记忆中储存的信息少得惊人,这使我们容易受到变化盲视的影响,这种现象是,如果我们在我们的视野中关注其他事情,即使非常大的变化也不会被注意到。 此外,警惕(vigilance)也是一种非常有限的资源;我们执行视觉搜索任务的能力下降很快,几个小时后的结果比开始的几分钟差得多。

变化盲视(Change Blindness),又称无意视盲。 变化盲视是人们对通常容易被注意到的大的变化反而无法观察到的现象。 当我们能够对周围世界中出现的变化进行觉察、识别和定位时,这叫做变化探测(change detection)。 简单来说变化盲视(change blindness) 是指观察者不能探测物体或情景所发生变化的现象。

显示容量是第三个需要考虑的限制。可视化设计人员经常“耗尽像素”,屏幕的分辨率不够大,无法同时显示所有所需的信息。 特定帧的信息密度是对编码信息量与未使用空间量的度量。在一次显示尽可能多的内容(以最大限度地减少视觉导航和探索的需要)和一次显示太多内容(用户被视觉混乱所淹没)之间存在权衡。

23.2 数据类型

可视化设计的许多方面都是由我们需要查看的数据类型驱动的。例如,它是一个数字表,还是一组项目之间的关系,还是固有的空间数据,如地球表面上的位置或文档集合?

我们首先考虑一个数据表。我们称行为数据项,列为维度,也称为属性。例如,行可以表示人,列可以是姓名、年龄、身高、衬衫尺寸和最喜欢的水果。

我们区分了三种类型的维度(属性):定量的、有序的和分类的。 定量数据,如年龄或身高,是数字的,我们可以用它做数学运算。例如,68 英寸减去 42 英寸等于 26 英寸。 对于有序的数据,比如衬衫尺寸,我们不能进行完整的算术,但是有一个定义良好的排序。例如,大减去中不是一个有意义的概念,但我们知道中介于小和大之间。 分类数据,如最喜欢的水果或名字,没有隐式排序。我们只能区分两个东西是相同的(苹果)还是不同的(苹果 vs 香蕉)。

关系数据(或图)是另一种数据类型,其中节点通过线连接。一种特定类型的图是树,它通常用于分层数据。节点和边都可以有关联的属性。不幸的是,Graph 这个词在可视化方面被重载了(图数据结构和 CG 中的图形都叫 Graph)。 我们在这里讨论的是节点链接图,遵循图论的术语,也可以被称为网络(Network)。在统计图形学领域,graph 常用于表示图表,如图 23.10 所示的时间序列数据的折线图。

有些数据本质上是空间的,比如地理位置或三维空间中位置的测量值,比如医生用来观察人体内部结构的核磁共振成像或 CT 扫描。 与空间中每个点相关联的信息可以是一组无序的标量,或索引向量,或张量。相比之下,非空间数据可以使用空间位置进行可视化编码,但是这种编码是由设计者选择的,而不是在数据集本身的语义中隐式给出的。这种选择是可视化设计中最核心和最困难的问题之一。

23.2.1 维度与数量

需要进行可视化编码的数据维度的数量是可视化设计问题的最基本方面之一。适用于具有几列的低维数据集的技术通常不适用于具有数十或数百列的高维数据集。数据维度可能具有层次结构,例如时间序列数据集,其中在多个时间尺度上存在有趣的模式。

数据项的数量也很重要:对几百项表现良好的可视化通常不能扩展到数百万项。在某些情况下,难题纯粹是算法上的(时间复杂度),计算时间太长;在其他情况下,这是一个更深层次的感知问题,即使是即时算法也无法解决,其中视觉混乱使得表示无法被人理解。维度内可能值的范围也可能是相关的。

23.2.2 数据转换与派生维度

作为解决领域问题的可视化管线流程的一部分,数据经常从一种类型转换为另一种类型。例如,原始数据维度可能由定量数据组成:表示温度的浮点数。对于某些任务,比如发现当地天气模式的异常,可以直接使用原始数据。 对于另一项任务,比如决定淋浴的水温是否合适,数据可能会被转换为有序的维度:热、暖或冷。在这个转换中,大部分细节被聚合掉了。 在第三个例子中,当烤面包时,一个更有损的转换到一个范畴维度可能就足够了:烧焦或未烧焦。

将数据转换为派生维度的原则,而不是简单地以原始形式对数据进行可视化编码。 在图 23.10 中,原始数据是时间序列曲线的有序集合。转换是对数据进行聚类,减少可视化编码的信息量,使其变成一些非常有意义的曲线。

23.3 以人物为中心的设计过程

可视化设计过程可以拆分为一组级联层,如图 23.3 所示。这些层都相互依赖;上一级的输出输入到下一级。

23.3.1 任务表征

一个给定的数据集有许多可能的可视编码。选择使用哪种视觉编码,可以根据用户的特定需求进行指导。不同的问题或任务需要非常不同的视觉编码。 例如,考虑软件工程领域。理解测试套件的覆盖率的任务得到了 Tarantula 界面的很好支持,如图 23.11 所示。 无论如何,在重构代码的同时理解软件的模块分解的任务上,也许一个更好的方案是将其层次结构直接地显示为节点-链接图。

理解一些目标受众的需求是一个棘手的问题。在以人为中心的设计方法中,可视化设计师随着时间的推移与一组目标用户一起工作。在大多数情况下,用户知道他们需要以某种方式查看他们的数据,但不能直接将他们的需求作为对数据类型的操作方面的明确任务来表达。 迭代设计过程包括通过采访和观察工作中的目标用户,从目标用户那里收集有关他们的问题的信息,创建原型(Prototype),并观察用户如何与这些原型(Prototype)交互,以了解所提议的解决方案的实际工作情况。软件工程中的需求分析方法也是有用的。

23.3.2 抽象

在第一层中识别出特定的领域问题后,下一层需要将其抽象为更通用的表示,即对上一节讨论的数据类型作相应的操作。来自不同领域的问题可以映射到相同的可视化抽象。 这些通用操作包括排序、过滤、描述趋势和分布、查找异常和异常值以及查找相关性。它们还包括特定于特定数据类型的操作,例如以图或树的形式跟踪关系数据的路径。

这个抽象步骤通常涉及从原始数据到派生维度的数据转换。这些派生的维度通常与原始数据的类型不同:可以将图转换为树,表格数据可以通过使用阈值来决定是否应该根据场值存在来转换为图,等等。

23.3.3 技术与算法设计

一旦选择好了抽象的类型,下一层就是设计适当的视觉编码和交互技术。

23.3.4 验证

四层中的每一层都有不同的验证要求。

第一层的目的是确定问题是否被正确地描述:是否真的存在执行特定任务的目标受众,他们将从所提出的工具中受益? 测试假设和猜想的直接方法是观察或采访目标受众,以确保可视化设计师完全理解他们的需求。在构建和部署工具之前无法进行的度量是监视其(工具)在该社区中的采用率,尽管当然除了实用性之外还有许多其他因素影响采用率。

下一层用于确定从领域问题抽象为对特定数据类型的操作是否实际上解决了预估的问题。在部署原型(Prototype)或成品工具之后,可以进行实地研究,以观察其目标受众是否以及如何使用它。此外,该系统产生的数据可以进行定性和定量分析。

第三层的目的是验证设计者所选择的视觉编码和交互技术是否有效地将所选择的抽象传达给用户。一个直接的测试是证明个人设计选择不违反已知的感知和认知原则。 这样的验证是必要的,但不是充分的,因为可视化设计涉及许多交互选择之间的权衡。在系统建立之后,可以通过正式的实验室研究对其进行测试,在实验室中,许多人被要求完成分配的任务,以便对他们完成任务所需的时间和错误率进行统计分析。

第四层用于验证设计用于执行编码和交互选择的算法比以前的算法更快或占用更少的内存。一个直接的测试是分析所提出算法的计算复杂度。实现后,可以直接测量系统的实际时间性能和内存使用情况。

23.4 视觉编码原理

我们可以将视觉编码描述为图形元素,称为标记(Marks),通过视觉通道传递信息。零维标记是一个点,一维标记是一条线,二维标记是一个区域,三维标记是一个体积。 许多视觉通道可以编码信息,包括空间位置、颜色、大小、形状、方向和运动方向。多个可视通道可以同时对不同的数据维度进行编码。例如,图 23.4 展示了使用水平和垂直空间位置、颜色和大小来显示四个数据维度。 对于显示较少信息但显示更清晰的设计,可以使用多个通道对同一维度进行冗余编码。

23.4.1 视觉通道特征

可视通道的重要特征是可分辨性、可分离性和弹出性。

通道并非都是同样可区分的。人们进行了许多心理物理实验,以衡量人们对不同视觉通道编码的信息进行精确区分的能力。我们的能力取决于数据类型是定量的、有序的还是分类的。图 23.5 显示了三种数据类型的可视化通道排名。 图 23.6 显示了 Tableau/Polaris 系统中可视通道的一些默认映射,它们考虑了数据类型。 空间位置是三种类型数据最准确的视觉通道,它主导着我们对视觉编码的感知。因此,两个最重要的数据维度通常被映射到水平和垂直空间位置。

然而,不同类型之间的其他通道差异很大。长度和角度的通道对于定量数据具有很强的可判别性,但对于有序和分类数据却很差,相反,色调对于分类数据非常准确,而对于定量数据则一般。

我们必须始终考虑显示数据维度所需的动态范围与通道中可用的动态范围之间是否有很好的匹配。例如,利用一维标记和大小通道的线宽编码。我们可以可靠地使用有限数量的宽度步幅来视觉编码信息:一个像素的最小厚度受到屏幕分辨率的限制(忽略反锯齿以简化讨论),并且存在一个最大厚度,超过该厚度时,线被视为多边形而非线。 线宽可以很好地显示数据维度中的三个或四个不同的值,但对于几十个或数百个值来说,它将是一个糟糕的选择。 有些视觉通道是整体的,在前意识层面上融合在一起,因此它们不是对不同数据维度进行视觉编码的好选择。其他的是可分离的,在视觉处理过程中它们之间没有相互作用,并且可以安全地用于多维编码。 图 23.7 显示了两个通道对。颜色和位置是高度可分离的。我们可以看到,水平大小和垂直大小不那么容易分开,因为我们的视觉系统自动将它们整合在一起,形成一个统一的区域感知。尺寸与许多通道相互作用:当一个物体的尺寸越来越小时,它的形状或颜色就越来越难以区分。

我们可以选择性地关注一个通道,使特定类型的项在视觉上“突出”(Popout)。 视觉突出(Popout)的一个例子是,我们可以在一堆蓝色的东西中立即发现红色的东西,或者从正方形中区分出圆圈。 视觉突出(Popout)功能强大且可扩展,因为它是并行发生的,不需要有意识地逐个处理项目。许多可视通道都有这种突出(Popout)属性,不仅包括上面的列表,还包括曲率、闪烁、立体深度,甚至照明方向。 然而,一般来说,我们一次只能利用一个通道的突出(Popout)特性。当我们需要同时搜索多个通道时,找到目标物体所需的时间长度与场景中物体的数量呈线性关系。

23.4.2 色彩

色彩可以是一个非常强大的渠道,但许多人不了解它的属性,并且使用不当。 我们可以根据三个独立的视觉通道来考虑颜色:色调、饱和度和明度。区域大小强烈影响我们感知颜色的能力。小区域的颜色相对难以感知,设计师应该使用明亮的、高度饱和的颜色,以确保颜色编码是可区分的。相反的情况是,当彩色区域很大时,就像在背景中一样,应该使用低饱和度的柔和颜色来避免使观看者失明。

色相是编码分类数据的一个非常强大的线索。然而,可用的动态范围是非常有限的。当彩色区域很小且分散在显示器周围时,人们只能可靠地区分大约 12 种色相。 颜色编码的一个好原则是保持类别的数量少于 8 个,记住背景和中性物体的颜色也算在总数中。

对于有序数据,亮度和饱和度是有效的,因为它们具有隐式感知顺序。人们可以可靠地根据亮度来排序,总是把灰色放在黑色和白色之间。有了饱和度,人们就会把饱和度较低的粉色放在完全饱和的红色和零饱和的白色之间。 然而,色相对于有序数据来说并不是一个很好的通道,因为它没有一个隐含的感知顺序。当被要求按红、蓝、绿、黄的顺序排列时,并非所有人都给出相同的答案。 人们也可以遵从习惯,比如红绿灯的绿黄红,或者彩虹的颜色顺序,但这些构建都是在一个比纯粹感知更高的层次上。 有序数据通常用一组离散的颜色值显示。 定量数据用色彩图(ColorMap)显示,色彩图是一组颜色值,可以是连续的,也可以是离散的。

在许多软件包中,一个非常不幸的默认值是彩虹色彩图,如图 23.8 所示。标准彩虹刻度有三个问题。 首先,色相用来表示顺序。一个更好的选择是使用亮度,因为它有一个隐含的感知顺序。更重要的是,人眼对亮度的反应最为强烈。 其次,尺度在感知上不是线性的:在连续的范围内,相等的步长在我们的眼睛中并不被认为是相等的步长(色彩空间上相等步长区别的颜色,在人眼感知中的区别不相等)。 图 23.8 显示了一个示例,其中彩虹色彩图混淆了数据。虽然从 −2000 到 −1000 的范围有三种不同的颜色(青色、绿色和黄色),但从 −1000 到 0 的相同大小的范围看起来只是整个黄色。 右边的图表显示,感知值与亮度密切相关,亮度在这个尺度上甚至不是单调增加的。 相反,图 23.9 用更合适的色图显示了相同的数据,其中亮度单调增加。Hue 用于创建语义上有意义的分类:查看者可以讨论数据集中的结构,例如深蓝色的大海、青色的大陆架、绿色的低地和白色的山脉。

在离散和连续的情况下,颜色映射都应该考虑数据是顺序的还是发散的。 用颜色编码的另一个重要问题是,很大一部分人(大约 10%的男性)缺乏红绿色。如果由于目标域的约定而选择使用红色和绿色进行编码,则除了色调之外,还可以对亮度或饱和度进行冗余编码。

23.4.3 2D vs. 3D 空间布局

空间定位是使用两个还是三个通道的问题已经得到了广泛的研究。当基于计算机的可视化在 20 世纪 80 年代末开始时,交互式 3D 图形是一种新功能,人们对 3D 表示有很大的热情。随着该领域的成熟,研究人员开始了解 3D 方法在用于抽象数据集时的成本。

遮挡,数据集的某些部分隐藏在其他部分后面,是 3D 布局的一个主要问题。尽管 Z-缓冲和 BSP 树等隐藏表面剔除算法可以快速计算出正确的 2D 图像,但人们仍然必须将许多这些图像合成为内化为精神上的映射(Internal Mental Map)。 当人们看到由熟悉的物体制作的逼真场景时,通常他们能很快理解他们所看到的。然而,当他们看到一个不熟悉的数据集时,其中选择的视觉编码将抽象维度映射到空间位置。即使他们可以使用交互式导航控件来改变他们的 3D 视点,理解其 3D 结构的细节也是具有挑战性的。原因还是人类的记忆容量有限。

3D 的另一个问题是透视失真。虽然现实世界的物体在远离我们的眼睛时确实显得更小,但远景缩短使得物体高度的直接比较变得困难。 再次强调,尽管我们经常可以根据过去的经验判断现实世界中熟悉物体的高度,但是我们无法保证这些这样的能力同样适用于拥有视觉编码的完全抽象的数据,这些数据的高度传达意义。 例如,在 3D 条形图中判断条形高度比在多个水平对齐的 2D 条形图中判断条形高度要困难得多。

不受约束的 3D 表示的另一个问题是,在 3D 空间中任意方向的文本远比在 2D 图像平面中对齐的文本更难阅读。 图 23.10 说明了如何仔细选择抽象数据集的 2D 视图来避免 3D 视图固有的遮挡和透视失真问题。俯视图显示了直接从原始时间序列数据创建的 3D 表示,其中每个横截面是一个 2D 时间序列曲线,显示一天的功耗,每一天都有一条曲线。 虽然这种表示很容易创建,但我们只能看到大规模的模式,例如工作时间的较高消耗以及冬季和夏季之间的季节性变化。 为了在底部创建 2D 链接视图,对曲线进行分层聚类,并且在相同的 2D 框架中只绘制代表顶部聚类的聚合曲线。在一天的所有时间里,曲线高度之间的直接比较很容易,因为没有透视失真或遮挡。在日历视图中使用相同的颜色编码,这对于理解时间模式非常有效。

相比之下,如果一个数据集由固有的 3D 空间数据组成,例如从 MRI 扫描显示飞机机翼上的流体流动或医学成像数据集,那么 3D 视图的成本被其帮助用户构建数据集结构的有用心理模型的好处所抵消。

虽然构建 3D 视图的成本很高,但是它带来的收益更高(所构建的模型很好的帮助用户理解)。

23.4.4 文本标签

标签和图例形式的文本是创建有用而不仅仅是美观的可视化的一个非常重要的因素。坐标轴和打勾标记应该被使用。图例应该表明颜色的含义,无论是用作离散的色块还是连续的颜色渐变。 数据集中的单个项通常具有与之关联的有意义的文本标签。 在许多情况下,在任何时候显示所有标签都会引起过多的视觉混乱,因此可以使用标签定位算法来显示项目的一个子集,该算法以所需的密度显示标签,同时避免重叠。 选择代表一组项目的最佳标签的一种直接方法是使用基于标签重要性度量的贪心算法,但是基于组的特征合成新标签仍然是一个难题。一种更加以交互为中心的方法是,仅根据用户的交互指示显示单个项目的标签。

23.5 交互原则

在设计可视化时,有几个交互原则很重要。 低延迟的视觉反馈允许用户更流畅地探索,例如,当光标简单地悬停在一个对象上而不是要求用户明确单击时,可以显示更多细节。在与大型数据集交互时,选择项是一项基本操作,就像用高亮显示可视化地指示所选集一样。颜色编码是一种常见的突出显示形式,但也可以使用其他通道。

许多形式的交互可以根据它们改变显示的方面来考虑。导航可以看作是视口的改变。排序是对空间顺序的一种改变;也就是说,改变数据映射到空间位置视觉通道的方式。整个视觉编码也可以改变。

23.5.1 从总览全局,到过滤以缩小范围,再到细节随需应变

有一句很有影响力的口头禅“"Overview first, zoom and filter, details on demand”阐明了交互和导航在可视化设计中的作用。无论是通过空间导航还是通过过滤,概览都可以帮助用户注意到进一步调查可能产生效果的区域。 正如我们下面所讨论的,细节可以通过多种方式呈现:通过点击或光标悬停的弹出窗口,在单独的窗口中,以及通过动态更改布局以腾出空间来显示其他信息。

23.5.2 交互成本

交互性既有能力,也有成本。交互的好处是,人们可以探索比单个静态图像更大的信息空间。然而,交互的代价是它需要人类的时间和注意力。如果用户必须详尽地检查每一种可能性,那么可视化系统的使用可能会退化为人力搜索。 自动检测感兴趣的特征,通过视觉编码显式地引起用户的注意,是可视化设计人员的目标。但是,如果手头的任务可以完全通过自动方式解决,那么首先就不需要可视化了。因此,在寻找可自动化和依赖人工来检测模式之间总是存在权衡。

23.5.3 动画

动画使用时间来显示变化。我们将连续帧只能播放、暂停或停止的动画与真正的交互式控制区分开来。 有大量证据表明,通过帮助人们追踪物体位置或摄像机视点的变化,动画过渡比死板的帧切换更有效。虽然动画可以非常有效地用于叙事和讲故事,但它通常在可视化环境中效果不佳。 通过使用动画(一种随时间变化的视觉形式)来显示随时间变化的数据似乎是显而易见的。然而,当人们看到由许多帧组成的动画时,他们很难在不连续的单个帧之间进行具体的比较。人类视觉记忆的能力非常有限,这意味着我们在比较我们过去看到的事物的记忆方面比比较我们当前视野中的事物要差得多。对于需要在多达几十帧之间进行比较的任务,并排比较通常比动画更有效。 此外,如果在帧之间变化的对象数量很多,人们将很难跟踪发生的所有事情。叙事动画是精心设计的,以避免同时发生太多动作,而可视化的数据集则没有这种限制。 对于只有两帧且变化有限的特殊情况,在两者之间来回翻转的非常简单的动画可以是识别它们之间差异的有用方法。

23.6 合成视图与邻接视图

一个非常基本的视觉编码选择问题:是让一个复合视图在同一个框架或窗口中显示所有内容,还是让多个视图彼此相邻。

23.6.1 单层

当只有一个或两个数据维度需要编码时,水平和垂直的空间位置是显而易见的视觉通道,因为我们对它们的感知最准确,位置对数据集的 Internal Mental Map 的影响最大。 传统的统计图形显示,如折线图、条形图和散点图,都使用标记的空间顺序来编码信息。这些显示可以通过额外的视觉通道进行增强,例如颜色、大小和形状。 最简单的标记是一个像素。在面向像素的显示中,目标是提供尽可能多的项目的概览。这些方法在高信息密度下使用空间位置和颜色通道,但没有使用尺寸和形状通道。 图 23.11 显示了 Tarantula 软件可视化工具,其中大部分屏幕用于使用一像素高线对源代码进行概述。在执行一组测试用例时,每行的颜色和亮度显示它是否通过,失败,或者有混合结果。

23.6.2 叠加和分层

当多个项目的空间位置兼容时,它们可以叠加在同一帧中。当所有项目共享坐标轴时,一张折线图中可以显示多条线,一张散点图中可以显示多个点。 单一共享视图的一个好处是比较不同项目的位置非常容易。如果数据集中的项目数量有限,那么单个视图通常就足够了。 当有足够多的项目导致视觉混乱时,可视分层图可以扩展单个视图的有用性。图 23.12 显示了当用户将光标移动到一个单词块上时,大小、饱和度和亮度通道的冗余组合如何区分前景层和背景层。

23.6.3 字形(Glyphs)

我们一直在讨论使用简单标记进行视觉编码的想法,其中单个标记对于所使用的每个视觉通道只能有一个值。对于更复杂的标记,我们称之为字形,有一个内部结构,子区域有不同的视觉通道编码。 设计合适的字形与设计视觉编码具有同样的挑战。图 23.13 显示了各种各样的符号,包括 Chernoff 最初提出的臭名昭著的面孔。 使用人脸来显示抽象数据维度的危险在于,我们对不同面部特征的感知和情绪反应在某种程度上是高度非线性的,这一点尚未被完全理解,但这种可变性比我们目前讨论的视觉通道之间的可变性更大。比起鼻子大小或脸型等其他特征,我们可能更容易适应表明情绪状态的特征,比如眉毛的方向。 复杂的字形要求每个字形都有很大的显示面积,如图 23.14 所示,其中微型条形图显示了螺旋路径上许多点上四个不同维度的值。 更简单的字形可以用来创建全局视觉纹理,其中字形大小很小,小到如果不缩放就无法读取单个值,但是可以从概览级别识别区域边界。图 23.15 展示了一个利用如图 23.13 中右上角一般的简笔画绘制的案例。字形可以按规则间隔放置,也可以使用原始或派生数据维度放置在数据驱动的空间位置上。

23.6.4 多个视图

我们现在从只有一个框的方法转向那些使用多个链接在一起的视图的方法。最常见的连接形式是链接突出显示,在一个视图中选择的项在所有其他视图中突出显示。在链接导航中,一个视图中的移动会触发其他视图中的移动。

多视图方法有很多种。在通常被简单地称为多视图的方法中,相同的数据在几个视图中显示,每个视图都有不同的视觉编码,以最清楚地显示数据集的某些方面。 跨多个视觉编码的链接高亮显示的强大之处在于,在一个视图中位于连续区域的项在另一个视图中的分布通常非常不同。 在小倍数(small-multiples)方法中,每个视图对不同的数据集具有相同的视觉编码,通常帧之间具有共享轴,因此它们之间的空间位置比较是有意义的。使用小倍数的“Side-by-Side”比较可以避免在同一视图中叠加所有数据带来的视觉混乱,也可以避免人类记忆的局限性,即记住动画中随着时间变化的先前看到的帧。

概述和细节(overview-and-detail)方法是在两个视图中使用相同的数据和相同的视觉编码,它们之间的唯一区别是缩放级别。在大多数情况下,概览视图使用的显示空间比详细视图少得多。 概览视图和细节视图的组合在可视化之外的许多工具中都很常见,从地图软件到照片编辑。使用按需详细信息的方法,另一个视图显示关于某些选定项的更多信息,或者作为光标附近的弹出窗口,或者在显示的另一部分的永久窗口中。

确定视图本身相对于彼此的最合适的空间位置可能与确定单个视图中标记的空间位置一样重要。在某些系统中,视图的位置是任意的,由窗口系统或用户决定。对齐视图允许在它们之间进行精确的比较,无论是垂直的,水平的,还是两个方向都有。正如项可以在视图中排序一样,视图也可以在显示中排序,通常是根据度量整个视图某些方面的派生变量(而不是其中的单个项)进行排序。 图 23.16 显示了使用多个视图的人口普查数据的可视化。除地理信息外,每个县的人口信息还包括人口、密度、性别、年龄中位数、1990 年以来的变化百分比和主要民族的比例。使用的视觉编码包括地理视图、散点图视图、平行坐标视图、表格视图和矩阵视图。所有视图都使用相同的颜色编码,底部中间有一个图例。 散点图矩阵显示在所有视图中链接的突出信息,其中蓝色项目在某些视图中紧密相连,而在其他视图中分散分布。左上角的地图是中央大细节地图的概览。表格视图允许根据感兴趣的维度进行直接排序和选择。

23.7 数据简化

我们到目前为止讨论的可视化编码技术显示了数据集中的所有项。然而,许多数据集是如此之大,以至于同时显示所有内容会导致视觉混乱,以至于视觉表示对于查看者来说很难或不可能理解。 减少显示数据量的主要策略是概述和聚合、过滤和导航、聚焦+上下文技术以及降维。

23.7.1 概述和聚合

对于微小的数据集,可视编码可以很容易地显示所有项目的所有数据维度。对于中等大小的数据集,可以通过为每个项目显示较少的详细信息来构建显示所有项目信息的概述。 许多数据集在多个尺度上具有内部或可衍生的结构。在这些情况下,多尺度可视化表示可以提供多个层次的概览,而不仅仅是一个层次。 概述通常用作起点,向用户提供线索,告诉他们在哪里可以深入查看更详细的信息。

对于较大的数据集,创建概览需要某种形式的可视化摘要。数据缩减的一种方法是使用聚合表示,其中概览中的单个可视标记显式地表示许多项。

聚合的难点在于如何避免在汇总过程中剔除数据集中感兴趣的信号。在地图学文献中,对绘制不同比例尺的地图同时保留重要的区别特征的问题进行了广泛的研究,这个领域叫做制图概括(cartographic generalization)。

23.7.2 过滤和导航

数据缩减的另一种方法是过滤数据,只显示项目的子集。过滤通常通过在一个或多个数据维度中直接选择感兴趣的范围来执行。

导航是一种基于空间位置的特定过滤,改变视点会改变可见的项目集。几何缩放和非几何缩放都用于可视化。 通过几何缩放,相机在 2D 或 3D 空间中的位置可以通过标准的计算机图形控制来改变。在现实场景中,物品的大小应该取决于它们与相机的距离,只有它们的外观尺寸会根据距离而变化。 然而,在抽象空间的视觉编码中,非几何缩放可能是有用的。在语义缩放中,对象的视觉外观会根据可用的像素数量发生巨大变化。例如,文本文件的抽象视觉表示可以从一个没有标签的彩色编码的小框变成一个只包含文件名作为文本标签的中型框,再变成一个包含多行文件内容摘要的大矩形。 在现实场景中,距离摄像机足够远的物体在图像中是不可见的,例如,当它们的屏幕面积小于一个像素时。在保证可见性的情况下,使用原始或派生数据维度之一作为重要性度量,并且足够重要的对象必须在图像平面中始终具有某种可见的表示。

23.7.3 聚焦 + 上下文

聚焦+上下文技术是另一种数据简化方法。用户交互式地选择数据集项的子集作为焦点,并详细绘制。 可视编码还包括关于上下文显示的数据集其余部分或全部的信息,这些信息集成到显示焦点项的同一视图中。许多这些技术使用精心选择的失真(扭曲,distortion),将放大的焦点区域和缩小的上下文区域合并为一个统一的视图。 一个常见的交互比喻是可移动的鱼眼镜头。双曲几何为影响视图中所有物体的单个径向透镜提供了一个优雅的数学框架。 另一个交互比喻是使用多个不同形状和放大程度的镜头,这些镜头只影响局部区域。 拉伸和压扁导航使用橡胶片的交互隐喻,拉伸一个区域会压扁其他区域,如图 23.17 所示。工作表的边界保持固定,以便所有项目都在视口内,尽管许多项目可能被压缩到亚像素大小。 鱼眼隐喻并不局限于空间布局后使用的几何镜头;它可以直接用于结构化数据,例如分层文档,其中一些部分折叠,而其他部分则展开。

这些基于扭曲的方法是与非几何缩放相同构思的非文字导航的另一个例子。当在一个庞大而不熟悉的数据集中导航,并且用户只能看到一个小的局部区域时,他们可能会在高变焦水平下失去方向感。 这些方法的目的是提供更多的上下文信息,而不是单一的未扭曲的视图,希望人们能够在地标仍然可识别的情况下保持方向。然而,这些类型的扭曲仍然会让用户感到困惑或难以遵循。与多视图或单一的实际视图相反,扭曲的成本和收益尚未完全理解。标准 3D 透视是一种特别熟悉的扭曲,在早期的可视化工作中被明确地用作聚焦+上下文的形式。然而,随着第 23.4 节中讨论的 3D 空间布局的成本越来越低,这种方法变得不那么流行了。 在焦点项周围提供上下文的其他方法不需要失真(扭曲,distortion)。例如,图 23.18 所示的 SpaceTree 系统省略了树中的大多数节点,显示了交互选择的焦点节点与上下文树的根之间的路径。

23.7.4 降维

迄今为止介绍的数据缩减方法减少了要绘制的项目数量。当有很多数据维度时,降维也可以很有效。

通过切片,从要消除的维度中选择一个值,并且只提取与该维度值匹配的项目,以包括在低维切片中。切片对于 3D 空间数据特别有用,例如,当通过 CT 扫描在头骨不同高度检查人类头部的切片时。切片可以用来一次消除多个维度。

对于投影,不保留有关被消除维度的信息;这些维度的值被简单地删除,而所有项仍然显示。一种熟悉的投影形式是从 3D 投影到 2D 的标准图形透视图转换,在此过程中丢失有关深度的信息。 在数学可视化中,高维几何对象的结构可以通过在标准投影到图像平面之前从 4D 投影到 3D 并使用颜色对投影维度的信息进行编码来显示。 当此技术用于非空间数据时,有时称为维度过滤。 在一些数据集中,在比原始数据维数低得多的空间中可能存在有趣的隐藏结构。例如,有时直接测量感兴趣的自变量是困难的或不可能的,但有大量的因变量或间接变量是可用的。 目标是找到一个小的维度集,忠实地表示数据集中的大多数结构或方差。这些维度可以是原始维度,也可以是原始维度的线性或非线性组合合成的新维度。 主成分分析(PCA)是一种快速、广泛应用的线性分析方法。许多非线性方法被提出,包括多维尺度(MDS)。这些方法通常用于判断数据集中是否存在大规模聚类;由于信息在约简过程中丢失,低维图中的细粒度结构通常不可靠。 图 23.19 显示了文档收集绘制成的单个散点图。当数据集的真实维度远远高于 2 时,可能需要一个散点图矩阵来显示成对的合成维度。

23.8 一个例子

我们用几个使用上面讨论的技术可视化特定类型数据的例子来结束本章。

23.8.1 表格

表格数据是非常常见的,所有电子表格用户都知道。可视化的目标是通过易于感知的视觉通道对这些信息进行编码,而不是强迫人们将其作为数字和文本进行阅读。图 23.20 展示了 Table Lens,这是一种聚焦+上下文的方法,其中定量值在上下文区域被编码为 1 像素宽度线的长度,在聚焦区域被显示为数字。数据集的每个维度都显示为一个列,并且可以根据该列中的值通过在其标题中单击一次来访问项目行。 传统笛卡尔坐标系下的散点图方法,将项目(item)绘制为相对于垂直轴的点,只适用于二维和三维数据。许多表包含的数据维度远远超过三个,并且可使用的其他视觉通道编码的额外维度数量有限。 平行坐标是一种利用空间位置同时可视化更多维度的方法,其中坐标轴是平行的而非垂直的,并且 n 维项目显示为与每个坐标轴相交一次的折线。 图 23.21 显示了一个 8 维数据集,包含多个细节级别的 23 万个项目,从顶部的高级视图到底部的精细视图。使用分层平行坐标,项目(item)被聚类,项目的整个集群由不同宽度和不透明度的带表示,其中平均值位于中间,每个轴的宽度取决于该维度集群中项目的值。根据相似性度量,每个波段的颜色是基于簇之间的接近度。

23.8.2 图形

图形绘制领域涉及在 2D 或 3D 空间中找到图形中节点的空间位置,并在这些节点之间布线。在许多情况下,边布线问题可以通过只使用直边或只允许直角折弯来简化,但有些方法处理的是真正的曲线。如果图形具有有向边,则可以使用分层方法通过节点的水平或垂直空间排序来显示层次结构。如图 23.2 所示。 一套审美标准将人类对可读图形的判断操作化为可以在建议的布局上计算的度量(???)。图 23.22 显示了一些示例。 一些指标应该最小化,例如边缘交叉的数量、布局的总面积和直角弯折或曲线的数量。 其他则应该最大化,例如角度分辨率或对称性。 这个问题是困难的,因为这些标准中的大多数都是单独的 NP-Hard 问题,而且它们是相互不相容的。 许多绘制节点链接图的方法使用力定向放置,该方法从物理的弹簧力上得到灵感,在节点上绘制相互排斥的粒子。 虽然该方法具有很高的时间复杂性,并且容易陷入局部极小值,但许多工作都花在开发更复杂的算法上,如 GEM 或 IPSep-Cola。图 23.23 显示了使用 r-PolyLog 能量模型的交互系统,其中用几何鱼眼和语义鱼眼创建聚类图的聚焦+上下文视图。 图也可以通过显示邻接矩阵来进行可视化编码,其中所有顶点都沿着每个轴放置,如果两个顶点之间有边,则两个顶点之间的单元将被着色。 MatrixExplorer 系统使用链接的多个视图来帮助社会科学研究人员通过矩阵和节点链接表示直观地分析社会网络。 图 23.24 显示了同一图结构在这两个视图中创建的不同视觉模式:A 表示连接多个社区的参与者:B 是一个社区:C 是一个团,或者说是一个完全子图。 矩阵视图不会受到混乱的边线交叉的影响,但是许多任务,包括路径跟踪,使用这种方法会更加困难。

23.8.3 树(Tree)

树是图数据结构的一种特殊情况。它是如此常见,以至于大量的可视化研究都致力于它。在二维平面上布局树的简单算法对小树很有效,而更复杂但可扩展的方法在线性时间内运行。图 23.17 和 23.18 还显示了采用不同空间布局方法的树,但是这四种方法都通过绘制连接父子节点的链接来可视化地编码父子节点之间的关系。 树形图(TreeMap)使用包含而不是连接来显示树中父节点和子节点之间的层次关系。也就是说,树形图(TreeMap)显示嵌套在父节点轮廓中的子节点。 图 23.25 显示了一个包含近 100 万个文件的分层文件系统,其中文件大小按矩形大小编码,文件类型按颜色编码。 树叶节点的大小可以编码一个额外的数据维度,但树内节点的大小并不能显示该维度的值;这是由它们后代的累积大小决定的。尽管与使用节点链接方法相比,使用树形图(TreeMap)来理解树的拓扑结构或通过树跟踪路径等任务要困难得多,但它很好地支持理解与叶节点相关的属性的任务。树形图(TreeMap)是空间填充表示,通常比节点链接方法更紧凑。

23.8.4 地理学

许多类型的分析,如流行病学,需要了解地理和非空间数据。 图 23.26 显示了一个对癌症人口统计数据集进行可视化分析的工具,该数据集结合了本章中描述的许多思想。链接视图的顶部矩阵以三种类型的视觉编码的小倍数为特征:左下方显示阿巴拉契亚县的地理地图,矩阵对角线上的直方图,以及右上角的散点图。底部的 2 × 2 矩阵连接散点图和地图,包括两者的颜色图例。 离散的二元顺序色彩图对两种互补色调中的每一种都具有顺序增加的亮度,并且对色觉不足的人有效。

23.8.5 空间场

大多数非地理空间数据被建模为一个场,其中有一个或多个值与 2D 或 3D 空间中的每个点相关联。 标量场,例如 CT 或 MRI 医学成像扫描,通常通过寻找等值面或使用直接体绘制来可视化。 矢量场,例如水或空气中的流动,通常使用箭头、流线和线积分卷积(LIC)来可视化。 张量场,比如那些描述分子在人脑中的各向异性扩散的张量场,特别具有挑战性。