本文作者是一名数据科学家,本文作者接触过各种类型的数据,最终发现,不管是何种类型的数据,不论是要传达想法还是进行数据呈现最好的手段都是进行数据可视化。在工作之余,本文作者在日常生活中也会尝试用图表和图谱来研究事物,比如电影和音乐等。

无论你的职业是什么,都有可能在日常生活中接触到分类数据。比如:

  • 如果你是一个狂热的体育迷,那么你极有可能对球员背后的统计数据感兴趣
  • 如果你是一个电影或音乐爱好者,并且想要进行深入的探索,那么这两个领域背后丰富的分类资源不可或缺

数据可视化已经逐渐成为沟通的有力的方式。

分类数据的难点之一是此类数据可能会涉及确定数据点之间的关系。分类数据也可能以层次结构的形式表现出来:在进行数据追踪时可能会面对从一个层次到另一个层次的“流动”。数据源可能具有复杂的底层结构,因此任何数据可视化的目标都是使用一个更加易于人们理解的方式来进行数据呈现。

传统的图表类型(如条形图、线形图和散点图)都可用于绘制分类数据的可视化图表,但是却不是最优选项。

  • 条形图对于显示某一个时间点或者对于数据的统计很有优势,但是它很难显示数据点之间的关系。
  • 线形图主要用于显示某一段时间内的数据趋势,可以用图形推断数据之间的关系,但是很难显示数据流
  • 散点图主要用于显示两个数据点之间的关系,但是有两个系列以上的数据会使得图表的可读性降低

所以人们最终选择使用流程图和网格图的组合来对分类数据进行数据可视化。在本文中,作者主要回顾了人们在进行数据可视化的过程中使用的主要流程图。本文从图表起源的历史开始讲述,对应该使用何种图表对数据进行可视化进行了说明,并就如何使用该种图表来进行数据可视化进行了讲解。

# 弧图

弧形图是最早提出用于对分类数据进行数据可视化的图表。首次提出是在1964年——托马斯-萨蒂(Thomas Saaty),在图论领域工作时,提出了用半圆来连接固定线上的相同类别以达到对平面上的交叉点数量进行可视化的目的

20210901162921_73vk3_1.png

图1:托马斯-萨蒂的弧形图,来自他1964年的论文。(来源:https://bit.ly/2IYsrLZ)

让我们将目光转向2001年,来看看弧形图的另一个应用。马丁-沃滕伯格(Martin Wattenberg),是IBM的一名研究人员,他在探索对音乐中的重复模式进行可视化的过程中发现弧形图时对一段较长的音乐中匹配音符序列的有效可视化方法。随着时间的推移,他在可视化图表中使用的弧形图也逐渐的成熟。

图二(下图)是他使用弧形图对贝多芬的《Elise》的复杂结构进行可视化的最终数据呈现结果。沃滕伯格的技术采用了使用音符的 "等高",或者在使用和弦的地方,在一个分类点上使用最高音符。

人们可以一目了然地确定系列音符是如何在作品的开始和结束时使用的。此外,还可以确定子结构在整个乐曲中重复出现的频率。

20210901162933_ztz79_2.png

图2:Martin Wattenberg的贝多芬A小调巴加泰尔舞曲中的Für Elise弧形图(来源:https://bit.ly/32nxo8X)。

20210901162943_30o5r_3.png

图3:维克多-雨果的《悲惨世界》中可视化的人物共同出现的弧形图。(来源:https://bit.ly/2OSooEY)

弧形图可以作为对分类集群数据进行可视化的一种方法,但是在集群的排序上应邀注意以下几点:

  • 弧形图无法像二维布局那样很好的呈现图形的整体结构
  • 按照出现的频率对于类别进行排序是在利用弧形图进行数据可视化的过程中需要首要考虑的因素

弧形图有以下几个方面的优势:

  • 它可以应用在各个领域
  • 它是可视化分类实体联系的有力手段
  • 可以在多个图形框架中进行绘制,包括d3、Python、R和Tableau

# 和弦图

弦图主要用于对相互之间有一定关联的分类数据进行可视化。它最早被应用于医学领域——对人类与不同动物物种之间的染色体数量的关系进行可视化。和弦图最早出现在2007年的《纽约时报》上,最终的可视化图表如下图所示。

20210901163114_mo60k_4.png

图4:《纽约时报》的和弦图(来源:https://nyti.ms/2Cy4SG9)

弦图的名字来源于一个几何元素:从圆上的一个点到另一个点的直线是一个弦。但是观察过可视化和弦图之后人们发现:几乎在所有的和弦图中相互之间用于连接的线通常都是椭圆曲线。

以上图为例,和弦图主要是为了说明分类实体之间的关系,可视化图表外部的颜色带代表染色体和数百万个碱基对,连接和弦代表两者之间有相似的染色体类型,弦线越粗代表两者之间的关系越重要。

20210901163126_awis9_5.png

图5:利用和弦图对《朋友》每个角色之间的话语数量进行了可视化。(来源:https://bit.ly/33vpMlb) 《朋友》是一部围绕纽约市六个朋友的日常生活的情景喜剧。

这张图表的作者是朱利安-阿苏莱恩(Julien Assouline),主要是对剧中六个主要人物各自的说话数量进行了可视化,读者可以从这张图表中获取剧中人物之间的相互关系,并可以根据图表对人物的活跃度进行推断。

和所有的和弦图相似,图表中每个角色都有自己的颜色。图表中可以获取的主要信息如下

  • 连接两个角色之间的弦线宽度代表人物之间的对话数量
  • 人物弦线的宽度来代表人物在剧中所讲总字数的数量
  • Rachel 和Ross对话数量的总字数最高(超过1000字)
  • Rachel和Chandler对话数量的总字数最低

下面的可视化图表利用和弦图对发色相关的问题进行了数据可视化

20210901163138_cizyk_6.png

图6:利用和弦图对人们对目前的头发颜色和偏好的头发颜色之间的关系流进行了可视化(来源:https://bit.ly/2qBIlWn)

这张图的作者对人们是否对自己的头发颜色感到满意或者是否有意将在自己头发的颜色改变成其他三个颜色之中的一个做了调研。从和弦图中读者可以得出以下信息。

  • 可以通过图表的外带的弧形推断出每种发色的受访人数
  • 每个发色群体都有一部分人对自己本身的发色类型感到满意
  • 棕色头发的群体中想要改变发色的人数是最多的,并且他们对于金色头发的偏好是显而易见的

*本土作者Mike Bostock对颜色的使用十分巧妙——所使用的颜色与和弦头发的颜色相匹配,使得图表更见简洁,更见便于读者进行理解。

最后,在利用和弦图进行数据呈现时,需要牢记一些规则:

  • 组别放置很重要,尽量减少和弦交叉的次数
  • 利用和弦图描述一个每一个类别都相互联系的和弦可能会导致图表的混乱,此时要么省略弱连接,要么选择其中几个类别折叠成一个“其他”类别
  • 对非领域专家来说,和弦和弧线的表述可能会显得很不直观,此时,可以选择使用格式塔原则的额外视觉提示

# 桑基图

在本文的前半部分主要对可用于从一个实体类别到另一个实体类别之间的流动的数据可视化的图表类型进行了说明。接下来主要介绍用来对一系列实体类型之间的流动情况进行数据可视化的图表类型——桑基图,首先对桑基图的演变历史进行了介绍。

Charles Minard是一位法国土木工程师和统计学家,对信息图形领域有着浓厚的兴趣。他在进行对他所设计的铁路的乘客水平、负载以及交通率进行可视化的过程中,设计了至少50张桑基图。但是他最出名的可视化图表是对拿破仑在1812年俄罗斯战役中的士兵损失的可视化图表。

20210901163150_kpujd_7.png

图7:Charles Minard的1812年拿破仑俄罗斯战役地图。来源(https://bit.ly/34GRKL0)

上图中显示的是桑基图的用法之一,这个图表的核心目标是对拿破仑的军队在1812年战役中的规模变化进行了可视化,士兵的数量与线条的粗细成正比,读者通过观察图表可以看到,随着军队蜿蜒穿过各个地理位置(在图表中有相应的注释),尤其是当士兵到达莫斯科时,流线的宽度明显的减少了。

Matthew Sankey爱尔兰皇家工程师的一名上尉。1898年,他在《土木工程师协会会议记录》中写了一篇文章,主要讨论蒸汽机的效率问题,并对热能在实际和理想化的蒸汽设备中流动进行了数据可视化。

20210901163201_dsbnb_8.png

图8:Sankey的蒸汽机热效率流程图。来源(https://bit.ly/2Xa3nb3)

上图中也使用了桑基图来描述能量的损失。在Minard的案例中,他使用叠加的地理位置来显示拿破仑军队的损失点。在Sankey的案例中,他使用了一个蒸汽厂的逻辑图和方向指标来表示能量的流失。不管是表示军队的损失还是热量的流动,我们都可以从中看出桑基图是一个多功能的图表。

20210901163212_2k56w_9.png

图9:零碳英国的能源流向。来源(https://bit.ly/32xd9VD)

这是本文中最后一个关于桑基图的例子。上图中提供了一个现代的流程图,该图主要是围绕替代能源如何被用来生产不同的能量进行的可视化。

从这张桑基图中我们可以获得以下信息

  • 流动箭头对能源的来源到使用进行了直观的表达
  • 线条的粗细与能源消耗成正比

*能源类型在图表左边,能源使用在图表右边

使用桑基图首先需要注意的是颜色的使用

  • 考虑到图表的可读性,不建议使用过多颜色
  • 如果图表中不止一种类型的数据,那么则可以采用不同色调的主色进行表示
  • 图表中所使用的颜色不可过多,建议限制在五种或者六种颜色即可

桑基图也可以使用多种框架来创建,如D3.js、Python(Mathplotlib)、R(networkD3)和Tableau等。

# 旭日图

旭日图主要用来对流动或者分层的数据进行数据可视化。该图表的主要特点如下:

  • 图表是由一系列的同心圆构成的
  • 图表的中心是根节点,而每个后续的同心圆是外部的叶子节点
  • 除根节点和最外层节点外,每个节点都与外部和内部的节点相连

旭日图的最早例子是由Lawrence W. Fike在1890年创造的,他使用了一个层次分明的圆形图对动物的科、属、种和亚种进行了数据可视化,具体图形如下所示

20210901163222_9sosr_10.png

图10:Lawrence W Fike的动物分类。(来源:https://bit.ly/33yAmb7)

本文作者接下来为读者介绍了一个使用3D框架创建的旭日图的图例,该图表对网站上访问页面的流程进行了说明,并且对每个子版块是如何被访问的进行了详细介绍。

在上图的数据可视化图表中,当读者把鼠标悬停在对应部分时,会有弹窗显示有多少百分比的用户使用了独特的网页序列来进行导航。

20210901163231_x012o_11.png

图11:用D3.js实现的Sunburst来说明一个网站的事件序列。来源(https://bit.ly/36V1EuG)

  • 旭日图可用于显示不同序列的总比例
  • 颜色的使用对于旭日图的可读性至关重要
  • 旭日图具有多层次,层次的放置对于旭日图的可读性也有关键的作用

接下来的旭日图图例中使用了大量的颜色,但是由于位置和颜色的直观使用,图表仍然具有很强的可读性

20210901163241_vy3tt_12.png

图12:描绘咖啡品鉴师轮的旭日图。(来源:https://bit.ly/2NyNVlh)

上图描述了一个咖啡品鉴师的口味轮,该图中使用了大量的不同的色彩:内段包含九种不同的颜色,中段包含二十八种颜色,而外段则包含七十多种颜色。

在前文关于桑基图的介绍中,本文作者有提到过使用过多的色彩会对图表的可读性造成一定的影响。

但是在图12中,作者巧妙的使用了色彩方案的布局和类别的放置:

  • 红色、橙色和黄色的色调放置在轮子的上半部分
  • 蓝色、绿色和灰色的色调则放置在轮子的下半部分
  • 轮子的外段有一些 "颜色交叉",最明显的是一些棕色和绿色的色调,但是由于旭日图的特点——从中心向外阅读,弱化了颜色的并列

旭日图时目前最流行的可视化图表之一,它允许一定程度上的互动,除了前面提到的几种框架,它还允许在Microsoft Office和SPSS等框架进行构建

# 总结

综上所述,本文主要讨论了用于对分类数据之间数据流动进行可视化的四种图表类型。

弧形图在绘制1:1的实体关系方面非常有用。

和弦图被用来显示类别之间的关联强度。

桑基图被用来绘制类别之间的多流关系,也可用于显示多组件系统(如蒸汽机)之间的过程流。

最后,旭日图被用来绘制事件序列及其比例关系。

就其所有差异而言,每一种图表类型都提供了一种独特的方式来对分类数据及其相关计数的进行数据呈现,让图表更加的易于理解。

点击此处阅读原文