3.5 图表的基本类型
国外专家Nathan Yau总结了数据可视化的过程中一般要经历的4个过程,如图3-5-1所示[2]。不论是商业图表还是学术图表,要想得到完美的图表,在这4个过程中都要反复进行思索。
图3-5-1 数据可视化的探索过程[2]
● 你拥有什么样的数据(What data do you have)?
● 你想表达什么样的数据信息(What do you want to know about your data)?
● 你应该采用什么样的数据可视化方法(What visualization methods should you use)?
● 你从图表中能获得什么样的数据信息(What do you see and does it makes sense)?
其中,你应该采用什么样的数据可视化方法尤为关键,所以我们需要了解有哪些图表类型。下面根据数据想侧重表达的内容,将图表类型分为6大类:类别比较、数据关系、数据分布、时间序列、局部整体和地理空间。注意:有些图表也可以归类于两种或多种图表类型。
3.5.1 类别比较
类别比较型图表的数据一般包含数值型和类别型两种数据类型(见图3-5-2),比如在柱形图中,X轴为类别型数据,Y轴为数值型数据,采用位置+长度两种视觉元素。类别型数据主要包括柱形图、条形图、雷达图、坡度图、词云图等,通常用来比较数据的规模。有可能是比较相对规模(显示出哪一个比较大),也有可能是比较绝对规模(需要显示出精确的差异)。柱形图是用来比较规模的标准图表(注意:柱形图轴线的起始值必须为0)。
图3-5-2 类别比较型图表
3.5.2 数据关系
数据关系型图表分为数值关系型、层次关系型和网络关系型三种图表类型(见图3-5-3)。
图3-5-3 数据关系型图表
数值关系型图表主要展示两个或多个变量之间的关系,包括最常见的散点图、气泡图、曲面图、矩阵散点图等。该图表的变量一般都为数值型,当变量为1~3个时,可以采用散点图、气泡图、曲面图等;当变量多于3个时,可以采用高维数据可视化方法,如平行坐标系、矩阵散点图、径向坐标图、星形图和切尔诺夫脸谱图等。
层次关系型图表着重表达数据个体之间的层次关系,主要包括包含和从属两类,比如公司不同部门的组织结构,不同洲的国家包含关系等,包括节点链接图、树形图、冰柱图、旭日图、圆填充图、矩形树状图等。
网络关系型图表是指那些不具备层次结构的关系数据的可视化。与层次关系型数据不同,网络关系型数据并不具备自底向上或者自顶向下的层次结构,表达的数据关系更加自由和复杂,其可视化的方法常包括:桑基图、和弦图、节点链接图、弧长链接图、蜂箱图等。
3.5.3 数据分布
数据分布型图表主要显示数据集中的数值及其出现的频率或者分布规律,包括统计直方图、核密度曲线图、箱形图、小提琴图等(见图3-5-4)。其中,统计直方图最为简单与常见,又称质量分布图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。
图3-5-4 数据分布型图表
3.5.4 时间序列
时间序列型图表强调数据随时间的变化规律或者趋势,X轴一般为时序数据,Y轴为数值型数据,包括折线图、面积图、雷达图、日历图、柱形图等(见图3-5-5)。其中,折线图是用来显示时间序列变化趋势的标准方式,非常适用于显示在相等时间间隔下数据的趋势。
图3-5-5 时间序列型图表
3.5.5 局部整体
局部整体型图表能显示出局部组成成分与整体的占比信息,主要包括饼图、圆环图、旭日图、华夫饼图、矩形树状图等(见图3-5-6)。饼图是用来呈现部分和整体关系的常见方式,在饼图中,每个扇区的弧长(以及圆心角和面积)大小为其所表示的数量的比例。但要注意的是,这类图很难去精确比较不同组成的大小。
图3-5-6 局部整体型图表
3.5.6 地理空间
地理空间型图表主要展示数据中的精确位置和地理分布规律,包括等值区间地图、带气泡的地图、带散点的地图等。地图用地理坐标系可以映射位置数据。位置数据的形式有许多种,包括经度、纬度、邮编等。但通常都是用纬度和经度来描述的。Python的GeoPandas包可以读取SHP和GEOJSON等格式的地理空间数据,使用plot()函数或者ggplot()函数可以绘制地理空间型图表。
《地图管理条例》第十五条规定:“国家实行地图审核制度。向社会公开的地图,应当报送有审核权的测绘地理信息行政主管部门审核。但是,景区图、街区图、地铁线路图等内容简单的地图除外。”本书原计划用专门的章节讲解使用Python如何绘制不同地理坐标投影下,从世界到不同国家与区域(包括中国)的实际地图,但是由于出版审核周期等原因已移除,所以只能以虚拟地图的数据为例讲解不同的地理空间型图表。读者须将绘图方法应用到实际的地理空间型图表中。
绘制这些不同类型的图表,主要使用matplotlib、plotnine、Seaborn等包。对于二维直角坐标系下的图表,主要使用plotnine和Seaborn;对于极坐标系和三维直角坐标系下的图表,则需要使用matplotlib绘制以上不同类别的图表。这些图表的绘制方法在后面的章节都会进行详细的讲解。