大数据可视化理论与案例分析 | 青训营笔记

255 阅读22分钟

这是我参与「第四届青训营 」笔记创作活动的第16天

主要内容(手册内容在涵盖课程ppt 内容的同时做了大量细节补充和扩展,章节做了重新编排):

  1. 定义

  2. 数据可视化基本流程

  3. 数据

  4. 可视化设计

  5. 交互

  6. 动画

  7. 实例

  8. 定义(Definition)

1.1 什么是可视化(What is Visualization)

按照维基百科对可视化的定义

Visualization is any technique for creating images, diagrams, or animations to communicate a message

根据这个定义,我们可以理解为通过视觉元素(图像,图表,动画等等)来进行信息交流的方式都可以称之为可视化。比如下面的梵高的绘画,奥运会的ICon设计,一个具体的桑吉图都属于可视化。

(星夜-文森特·梵高-1889)

1.2 什么是数据可视化(What is Data Visualization)

Anything that converts data into a visual representation (like charts, graphs, maps, sometimes even just tables)

“数据可视化”和“可视化”的定义很相似,只是增加了一个关键词——“数据”。

下面是几个典型的应用场景。

在科学可视化领域,数据可视化的作用主要是形象化的呈现,方便人们理解和查看。比如医学领域的扫描成像,可以大大提高医生探寻病因的效率。下面是一个人体内细胞运动的可视化作品,以壮美的方式呈现了人体内的微观世界(www.youtube.com/watch?v=NTg…

呈现数据关系的信息可视化是我们见到最多的可视化方式,比如下图通过地理信息以及连线展现唐代人物的迁徙轨迹(cbdb-qvis.pkudh.org/part1_migra…

在计算机诞生之前,可视化都是静态作品,人们只能通过看来理解数据。随着计算机图形的发展,交互成为一个重要研究方向,可视化和图形交互的融合,产生了探索式数据分析。比如下面的数据分析工具Tableau的交互界面(www.tableau.com

1.3 数据可视化作用(The role of data visualization)

直观展示

一图胜千言。数据可视化最直观的作用就是将数据要阐述的内容直观的展现出来,比如下面著名的“拿破仑东征图”。

Charles Joseph Minard,Map of Napolean's Russian Campaign of 1812

这个图表使用颜色标注了拿破仑进军莫斯科的路线图及败退路线,简单的可视化利用二维平面展现了包括空间、时间、气温、军队的人数等多个维度的信息,使得观察者可以通过一幅图了解整个历史事件的全貌。

数据探索

(Anscombe's quartet)是四组基本的统计特性一致的数据,但由它们绘制出的图表则截然不同。每一组数据都包括了11个(x,y)点。这四组数据由统计学家弗朗西斯·安斯库姆(Francis Anscombe)于1973年构造,他的目的是用来说明在分析数据前先绘制图表的重要性,以及离群值对统计的影响之大。

促进沟通与交流

由于可视化可以高效的阐释数据内含,合理的可视化设计可以更好的帮助作者表达其观点。比如下方的“南丁格玫瑰图((en.wikipedia.org/wiki/File:N…%25E2%2580%259D%25EF%25BC%258C "en.wikipedia.org/wiki/File:N…")

 各色块圆饼区均由圆心往外的面积来表现数字  蓝色区域:死于原本可避免的感染的士兵数  红色区域:因受伤过重而死亡的士兵数  黑色区域:死于其它原因的士兵数  1854年10月、1855年4月的红黑区域恰好相等  1856年1月与2月的蓝、黑区域恰好相等  1854年11月红色区域中的黑线指出该月的黑色区域大小
复制代码

出于对资料统计的结果会不受人重视的忧虑,弗洛伦斯·  南丁格尔 ****发展出一种色彩缤纷的图表形式,让数据能够更加让人印象深刻。这张图表用以表达军医院季节性的死亡率,从整体上来看: 这张图是用来说明、比较战地医院伤患因各种原因死亡的人数,每块扇形代表着各个月份中的死亡人数,面积越大代表死亡人数越多。这幅图让政府相关官员了解到:改善医院的医疗状况可以显著的降低英军的死亡率。南丁格尔的方法打动了当时的高层,包括军方人士和维多利亚女王本人,于是医事改良的提案才得到支持,甚至挽救了千万人的生命

随着可视化的发展,人们使用更多的应用形式来 传递信息,比如仪表盘,数据大屏等。

  1. 数据可视化基本流程(Process)

一个可视化作品的诞生,要经历一系列流程,我们将其抽象成如下图所示的四个大的步骤。

vis.stanford.edu/files/2005-…

第一步 : 数据处理(  Abstract Data   只有满足特定结构的数据才能做对应的可视化展现,而且为了达到好的可视化效果也需要对数据进行清洗、转换等操作。

第二步 : 可视化设计与表达(  Visualization Design)  根据数据特征选择合适的展现模式,在此基础上通过合理的使用视觉编码,来定义最终的可视化展现内容。

第三步:可视化渲染(  Rendering and Display)

将定义好的图形转换成为图像,展现给观众。

第四步:可视化交互(  Interactivity)

单一的可视化结果并不能满足用户的多方面诉求,用户往往借助交互方式,进一步了解细节或者对数据进行筛选、聚合、分面等,对数据进行多方面的探索。

下面我们详细的对第一、第二、第四步骤 进行讲解。

  1. 数据(Data)

Data is defined as a collection of meaningful facts which can be stored and processed by computers or humans.

能被存储和处理的信息,都可以被视为数据。我们日常接触到的文本、视频、图像、账单等等都是数据。每一个种类的数据都是一个大的集合,由多条小的数据条目组成,称之为数据集(DataSet)。

数据集分为结构化和非结构化(比如文字、图像),数据可视化只能对结构化数据进行呈现。非结构化数据经过处理之后,可以转换为结构化数据,进一步进行可视化展现。比如文本,我们可以通过自然语言处理、机器学习、文本挖掘等多种手段将其转化为结构化数据。

3.1 数据与数据集分类(Data and Dataset)

数据可以被分为以下五种类别:

  • Items:具体的每一条数据

  • Attributes:条目的每个字段的属性

  • Links:数据之间的关系

  • Positions:位置

  • Grids:网格

数据集被分为以下五种类别:

  • Tables:表格数据

  • Networks & Trees:层次结构数据

  • Fields:场数据

  • Geometry:几何数据

  • 其他集合类型:Clusters,Sets,Lists

一个数据集可以由一种或者多种数据类型组成,包含关系如下表:

(Tamara Munzner 《Visualization Analysis & Design》)

下面我们对几种数据集做具体的解构分析。

3.1.1 表格(Tables)

表格是使用行、列和单元格的概念来存储数据的结构,每一行是一条数据,每一列都有一个统一的属性定义。以下面学生信息表为例:

该表格有三条数据,每一条数据都有5个属性(Attribute),ID、Name、Age、Shirt Size、Favorite Fruit。

行列交叉的单元格里面就是具体的值(Value)。

3.1.2 多维表格(Multidimensional Table)

多维表格数据和普通表格数据组织形式上最大的不同的点在于key 的数量。通常一个普通表格的key 就是行号,比如3.1.1 的 学生信息表为例,“第2行的年龄7”这样的描述,我们是可以明确的知道描述的对象的名字是Basil,而且Basil 最喜欢的水果是Pear。 但是对于多维表格数据则需要多个key才能确定一个value。

下图所示的一个多维表格数据,我们通过简单的行号或者选取一个键都没办法确定一个明确的数据条目,比如我们想得到一个销售值,那么应该描述成为“ Timeid 为1,pid 11 的销售值为25”,更复杂的数据需要更多的键来组合定位。

www.javatpoint.com/data-wareho…

将两个维度的数据聚合在一起就是一个  “面”  ,第三个维度方向上多个面就形成了一个  “体”,  如上图右侧所示,这就是数据立方体基本概念 

我们将每一个面平铺到表格中,就是一个数据透视表,如下图:

www.javatpoint.com/data-wareho…

如上面表格,每个item 是一个普通表格,行号或者Time 都可以作为唯一的key。

3.1.3 网络和树(Networks or Trees)

网络和树数据,核心概念就是“关系”。必须要显示的定义数据条目之间的关联关系才能绘制出网络图和树图。

上图左侧是比较常见的图数据的配置结构,每一个 node 就是一个 data item,node中的属性就是 attributes。 Edges 中定义的就是节点的关系,对应于 Links 。

3.1.4 场(Fields)

场数据,用于描述磁场、电场、风场等数据,存储结构是网格(grid),每个网格中一般是向量、标量或者张量。

结合上图左右两侧对照,场数据以网格形式存储,右侧的“gridWidth”和“gridHeight”定义了网格的大小(行列数量),field 下面定义了各单元格的值(value)。下图显示了一个风场的可视化效果。

www.cnblogs.com/fuckgiser/p…

3.1.5 几何数据(Geometry (Spatial))集

几何数据集是几何图形数据的几何,通常用来描述地理信息。

如地图,由多个几何图形拼装而成,在定义地图的数据中会定义具体的几何图形类型及位置信息。

3.2 属性分类(Attribute Types)

数据集中的数据条目都会包含一个或者多个属性(Attribute),属性分为分类(Categorical)和排序(Ordered)属性。排序属性又分为顺序(Ordinal)和定量(Quantitative)两种类别。

结合上图中的学生信息表,我们具体分析一下。第一列的 ID 数值是序号,数字类型,属于Quantitative 字段。第二列 Name 属于 Categorical 字段。第三列 Favorite Fruit 属于 Categorical 字段。第四列 Age ,数字类型 属于 Quantitative 字段。第五列 Gender ,性别属于 Categorical 字段。第六列 Shirt Size ,衣服尺寸虽然不是数字,但是它可以进行大小排序,属于 Ordinal 字段。

上面我们已经了解了数据集类型,数据集类型决定我们选择什么样的可视化形式来展现数据,具体到展现的细节,则是由属性(Attribute)来决定。

  1. 可视化设计(Visual Design)

  1. 认知(Cognition)与 知觉(Perception)

Visualization is really about external cognition, that is, how resources outside the mind can be used to boost the cognitive capabilities of the mind. 可视化是一个帮助人们对 外部信息进行认知的过程,也就是说,是一个使用大脑以外的视 觉资源与信号,来帮助增强大脑认知能力的过程 -- Stuart Card

从符号学层面来讲,人类将符号传递到大脑,随后对符号进行解码,根据大脑中的知识来得到符号具体表达的意义。

读取一张图片和接收其他信息一样,依赖我们已经掌握的知识(signifier),我们只能识别我们知道的事情(signified)。我们识别一个符号到它所要表达的意义,实际上需要一个转换“函数”,这个函数就是Code,也就是一个心理认知过程。

关于进一步的知觉感知的研究总结,我们可以抽象人们识别可视化的三个步骤:

  1. Perception of raw visual signals,e.g. color, shape, etc. 原始信号感知
  1. Pattern recognition 模式识别
  1. Reasoning and Analysis 推理分析

Colin Ware ·《Information Visualization Perception for Design》·2004

可视化设计的目标就是要在以上三个步骤中,缩短人类的认知过程,达到准确高效的传递信息的目的。

编码

合理准确的可视化编码,可以提高人们在感知过程中各个步骤的速度和准确性

格式塔 理论 格式塔理论(Gestalt Laws)较为系统的对人类如何发现图形元素之间的相关性进行了全 面总结,被广泛的应用在了视觉设计当中,利用格式塔理论进行设计将有助于用户快速 识别图形符号所构成的“群组模式”。

节省墨水

为了减少冗余可视化元素对读者的影响,在设计过程中,要尽量让每一个符号都有数据意义。

An excellent visualization design gives to the viewer the greatest number of ideas in the shortest time with the least ink in the smallest space. 一个出色的可视化设计可在最短的时间内,使用最少的空间、用最少的笔墨为观众提供最多的信息内涵 -- --Edward R. Tufte

准确度

很多可视化设计会出现扭曲数据的情况,我们需要对夸张程度(或者准确程度)进行度量。

下面我们分别来论述这些方法和策略。

4.2 可视化编码

再回到第3节关于数据的论述,我们基于数据集类型来选取合适的可视化形式,接下来需要根据具体的 数据条目(Item)的特性来确定合适的图元(Mark),最后根据 属性(Atrribute)来配置合适的视觉通道,对图元进行修饰。

4.2.1 Mark

根据数据条目的不同,将Mark分为两个类别:

1. Items / Nodes

2. Links

根据数据维度的不同,我们可以选取点、线、面来进行表达数据。对于关系数据,则需要使用 Links 来展现。

4.2.2 通道(Channels)

选取了Mark之后,需要进一步描述Mark的具体视觉特性,这些特性称之为视觉通道(Visual Channels)

A visual channel is a way to control the appearance of marks

视觉通道有很多,下图以6种通道和3种Mark相组合,可以很直观的体会二者之间的关系。

(John Krygier and Denis 《Making Maps: A Visual Guide to Map Design for GIS》)

4.2.3 编码(Encode)

从数据到视觉通道的转换过程,被称之为视觉编码(Visual Encoding)。

不同的数据属性需要用不同的通道来进行编码才能达到更好的效果,上图将通道分成两组,分别对应分类数据和可排序数据。下面我以一个简单柱形图为例,进行拆解:

上图左侧是柱形图的配置数据,每个数据条目分为映射到X轴的Value,映射到Y轴的Value,还有一个分组字段“g”。

我们的目标是用来比对不同时间段的数值大小,所有Mark 选择 “点”类型,形状为 rect。X 轴是分类数据,我们按照数据条目的个数和出现顺序依次映射到X轴区间的位置(Position)上。Y 轴数据是 数字类型,映射到矩形的高度上。 分组字段是分类数据,我们通过颜色来进行编码。这样就形成了上图右侧的柱形图。

4.2.4 编码有效性(Effectiveness)

由于人类感知系统的特点,在不同场景下需要设计不同的编码策略,来提升感知速度和准确性。以下几项研究,对当前可视化设计有着深远影响。

预感知图形

经过科学家的实验论证,部分图形可以被人类大脑在非常短的时间内识,比如形状、长短、大小等。

在可视化设计过程中,尽可能的使用具有预感知特性的图形,可以加速感知处理的第一个过程。

有效性排序

一些研究人员对不同的视觉通道对不同数据进行编码进行单变量效果对比,得出有效性排名,下图是研究之一。

You must consider a continuum of potential interactions between channels for each pair,ranging from the orthogonal and independent separable channels to the inextricably combined integral channels.

--Tamara Munzner

但是在实际应用场景中,往往一个可视化作品需要组合多个通道,不同通道组合对读者的影响,实际研究不是很多,下图是其中之一。

(Tamara Munzner 《Visualization Analysis & Design》)

4.3 格式塔理论

格式塔针对人类对特定视觉模式的识别给了很好的分类,该理论同样适用于数据可视化设计。下面我们举例介绍6种原则。

邻近原则(proximity)

空间中距离相近的元素有被看作一体的趋势。人们会很自然的根据距离来对视觉对象进行分组。上图的分组柱形图,我们会很自然的把临近的柱子分为一组,其次才是观察颜色分组。

相似原则(similarity)

刺激物的形状、大小、颜色、强度等物理属性方面比较相似时,这 些刺激物就容易被组织起来而构成一个整体。如下图中,根据颜色和形状,将数据分为两组。

连通性原则  (Element Connectedness)

如果一些元素与其他元素相连时,我们认为这些元素是统一体。如下面的箱型图,如果没有中间的线上线相连,上下两条线是不会被看做一个整体进行分析的。

连续性原则 (Good continuation)

如果一个图形的某些部分可以被看作是连接在一起的,那么这些部分就相对容易被我们视为一个整体。如下面的折线图的连线,虽然是断开的多段线,但是我们仍然视之为一条折线。

封闭的原则(closure)

有些图形是一个没有闭合的残缺的图形,但主体有一种使其闭合的倾向。如下面的形状词云。

共同命运原则(common fate)

如果一个对象中的一部分都向共同的方向去运动,那这些共同移动的部分就易被感知为一个整体。如下方左图,我们会按照相似原则把每行看作一个分组,但是右侧由于共同的运动方向,我们会把每列看作一个分组。

4.4 谎言因子

谎言因子(Lie Factor, LF)的概念由德国慕尼黑工业大学Rüdiger Westermann教授提出,用于衡量可视化中所表达的数据量与数据之间的夸张程度的度量方法。

  • 当LF=1时,我们认为图表没有对数据实时进行扭曲,是一个可信的可视化设计

  • 在实际当中,应当确保各部分图形元素的 LF 在 [0.95, 1.05] 范围内,否则,所产生的图 表认为已经丧失了基本可信度

我们以下图为例做一个简单分析。

在上图中,1978年的长0.6英寸线条代表18 m/g,而1985年5.3英寸线条代表27.5 m/g,数字差异计算:

(27.5 – 18) / 18 = 0.53

图形差异计算:

(5.3 – 0.6) / 0.6 = 7.83

谎言因子计算:

LF = 7.83 / 0.53 =14.8

从结果看,大大夸大了数据事实。

下图是修正过的可视化设计。

4.5 数据-墨水比

可视化的核心是数据与信息,可视化作品的大部分笔墨应该集中在数据与信息的呈现上。为此,Tufte 提出了一个衡量标准 Data-ink ratio: Data-ink ratio 表示图表中不可删除的数据的部分占整个图表的比例,其定义如下: Data-ink ratio = data-ink / total ink used to print the graphic

  1. 交互(Interaction)

静态的数据展示并不能满足用户需求,很多时候我们需要提供交互形式,使得用户可以对数据进行多维度的探索。《Visualization Analysis & Design》一书对交互进行了分类,分为以下9种。

  • Change 改变

  • Juxtapose 并列

  • Filter 过滤

  • Select 选择

  • Partition 拆分

  • Aggregate 聚合

  • Navigate 导航

  • Superimpose 叠加

  • Embed 镶嵌

  1. 动画(Animation)

动画在可视化作品中的作用受到的关注越来越多,目前人们比较关注的作用有如下几个方面:

  • 体现数据变化过程
  • 引导观众的注意力
  • 增强美观度

根据动画的对象,我们可以将动画分为图元动画、组件动画和全局动画。同时,人们也对经常使用的动画效果进行了抽象和总结,比如缩放、旋转、飞入、飞出等。根据动画的实际又有入场、出场、更新等分类方式。

6.1 图元动画

下图是对图元动画的一个简单总结。

我们看几个示例。

  • 缩放动画

  • 渐变动画

  • 飞入动画

  • 失焦退场

6.2 全局动画

全局动画简单总结如下:

  • 全局遮罩转场

  • 全局 - 局部切换

  • 粒子流动效果

  • morphing 动画

echarts.apache.org/examples/zh…

  1. 实例(Cases)

最后我们给大家展示一些具体的数据集的可视化实现方案。

7.1 多维数据可视化

人们直接去分析多维数据,往往是非常困难的,借助可视化可以极大的提升效率。对多维数据进行可视化的方法也很多,这里简单介绍几种。

7.1.1 散点图 & 散点图矩阵

普通散点图可以通过大小、颜色和位置表达三个维度的数据,但是这对于更多维的数据来讲是远远不够的,于是诞生了散点图矩阵。

散点图矩阵中每个散点图表示两个维度之间的数据关系。我们看下面的例子(www.jiqizhixin.com/articles/20…

假设有如下图所示的数据:

每一行代表一个国家一年的观察数据,列代表变量(这种格式的数据被称作整洁数据,tidy data),其中有两个类别列(国家和洲)和四个数值列。这些列简单易懂:life_exp 是出生时的预期寿命,以年为单位,popis 是人口数量,gdp_per_cap 是人均 GDP(以国际元)为单位。只考虑数值类型属性之间的关系, 可生成如下的散点图矩阵:

散点图矩阵可以进一步扩展为普通的矩阵,如下图:

7.1.2 平行坐标轴

平行坐标轴方法中,数据的不同维度被显示为平行的坐标轴,数据元素被表示为一根折线。

这种方法适用于所有表格类型的数据,而且支持异构数据的展现。平行坐标轴方法也扩展出多种显示形式。

7.1.3 Glyph

Glyph 是可以同时使用多个视觉通道,例如 图形(shape)、颜色(colour)、文本(texture)、大小(size)、角度(orientation)、比例(aspect ratio)、曲率(curvature)的一种组合图元。同时每个glyph 可以单独被识别出来,为多场融合可视化提供了可能。

比如人脸图,可以通过五官要素对多个变量进行编码。

From 《The Grammar of Graphics》

下图的是一个温度计组件。水银高度和温度计宽度可以用来展现两个变量。通常可以作为散点图的变种。

from《The Grammar of Graphics》

由于Glyph的灵活性,为创造更自由形式的可视化效果提供了可能,比如下面的向日葵图。

www.researchgate.net/publication…

7.2 树(图)可视化

点线图

邻接图

通过可视化节点之间的相邻位置关系以展现树的拓扑结构,节点的大小,宽度,可以用来展现另外一个数据维度。

包含图

邻接矩阵

7.3 地理信息可视化

地球是一个球体,但是我们需要将球体展现在二维平面上,这就涉及到地图投影,常见的投影方式为魔卡托投影。地图可视化涉及到的视觉属性有 面积、形状、方向、方位、距离和比例尺等。

墨卡托投影的过程其实非常简单,就是将地球展开成一个圆柱,再将圆柱展开成平面。

(更多内容参考 zh.wikipedia.org/zh-cn/%E9%B…

下面我们看几种常见的地图可视化例子。

区域分布地图

等高线地图

commons.wikimedia.org/wiki/File:C…

统计地图

统计地图是虚拟地图,以地图的形式来展现数据。

7.4 叙事可视化

在叙事场景中,为了能让用户结合上下文来理解可视化内容,会增加一些与数据条目无法直接映射的元素。另外一个叙事作品,要从主题到形式,到叙事节奏都进行精心的设计。

下图展现的是人类历史以来大规模传染病的事件。

这幅可视化作品首先从叙事形式上,采用象征发展历程的一个道路形象设计,采用透视效果来表达这一主题。使用了非常形象的病毒形象,采用了易于区分的颜色进行分类,病毒的体积和影响人数做映射。通过这个可视化作品,我们可以非常容易的看到人类历史上那些年底爆发了超大规模的传染性疾病。

下面这个作品具有强烈的政治意图,人文关怀。

guns.periscopic.com/

这幅作品展现的是一年中因为枪击事件而死亡的人数,巧妙的利用动画来展现一个人从生到死的过程。利用小球下坠来表达死亡。同时,一条曲线的两段对比强烈的颜色表达生和死。这个作品最大的亮点在于故事情节的设计,让读者看清表达含义之后,通过快速的视觉冲击来表达情感。节奏由慢到快,跳动的数字和主视图形成联动。