R语言数据可视化之美:专业图表绘制指南(增强版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.8 图表的基本类型

Nathan Yau将数据可视化的过程总结为4个步骤,如图1-8-1所示[19]。不论是商业图表还是学术图表,要想得到完美的图表,在这4个步骤中都要反复进行思索。

· 你拥有什么样的数据(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)?

其中,你采用什么样的数据可视化方法尤为关键,所以我们需要了解有哪些图表类型。现暂时根据数据想侧重表达的内容,将图表类型分为六大类:类别比较、数据关系、数据分布、时间序列、局部整体和地理空间。注意:有些图表也可以归类于两种或多种图表类型。

图1-8-1 数据可视化的探索过程[19]

1.8.1 类别比较

类别比较型图表的数据一般包含数值型和类别型两种数据类型(见图1-8-2),比如在柱形图中,X轴为类别型数据,Y轴为数值型数据,采用位置+长度两种视觉元素。类别型数据主要包括柱形图、条形图、雷达图、坡度图、词云图等,通常用来比较数据的规模。有可能是比较相对规模(显示出哪一个比较大),有可能是比较绝对规模(需要显示出精确的差异)。柱形图是用来比较规模的标准图表(注意:柱形图轴线的起始值必须为0)。

1.8.2 数据关系

数据关系型图表分为数值关系型、层次关系型和网络关系型三种图表类型。(见图1-8-3)。

图1-8-2 类别比较型图表

图1-8-3 数据关系型图表

数值关系型图表主要展示两个或多个变量之间的关系,包括最常见的散点图、气泡图、曲面图、矩阵散点图等。该图表的变量一般都为数值型,当变量为1~3个时,可以采用散点图、气泡图、曲面图等;当变量多于3个时,可以采用高维数据可视化方法,如平行坐标系、矩阵散点图、径向坐标图、星形图和切尔若夫脸谱图等。

层次关系型数据着重表达数据个体之间的层次关系,主要包括包含和从属两种关系,比如公司不同部门的组织结构,不同洲的国家包含关系等,包括节点链接图、树形图、冰柱图、旭日图、圆填充图、矩形树状图等。

网络关系型图表是指那些不具备层次结构的关系数据的可视化。与层次关系型数据不同,网络关系型数据并不具备自底向上或者自顶向下的层次结构,表达的数据关系更加自由和复杂,其可视化的方法常包括:桑基图、和弦图、节点链接图、弧长链接图、蜂箱图等。

1.8.3 数据分布

数据分布型图表主要显示数据集中的数值及其出现的频率或者分布规律,包括统计直方图、核密度曲线图、箱形图、小提琴图等(见图1-8-4)。其中,统计直方图最为简单与常见,又称质量分布图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。

图1-8-4 数据分布型图表

1.8.4 时间序列

时间序列型图表强调数据随时间的变化规律或者趋势,X轴一般为时序数据,Y轴为数值型数据,包括折线图、面积图、雷达图、日历图、柱形图等(见图1-8-5)。其中,折线图是用来显示时间序列变化趋势的标准方式,非常适用于显示在相等时间间隔下数据的趋势。

图1-8-5 时间序列型图表

1.8.5 局部整体

局部整体型图表能显示出局部组成成分与整体的占比信息,主要包括饼图、圆环图、旭日图、华夫饼图、矩形树状图等(见图1-8-6)。饼图是用来呈现部分和整体关系的常见方式,在饼图中,每个扇区的弧长(以及圆心角和面积)大小为其所表示的数量的比例。但要注意的是,这类图很难去精确比较不同组成的大小。

图1-8-6 局部整体型图表

如需绘制这些不同类型的图表,我们主要使用R ggplot2及其拓展包extension,比如ggrepel、ggally、ggalluvial等包;也还会使用lattice、plot3D等其他包。因为ggplot2包暂时不擅长三维图表的绘制,我们需要使用lattice包的wireframe()和cloud()等函数,plot3D包的persp3D()、hist3D()、scatter3D()、lines3D(), text3D()、surf3D()、polygon3D()等函数,绘制三维柱形图、散点图和曲面图等。这些图表的绘制方法在后面的章节都会进行详细的讲解。

1.8.6 地理空间

地理空间型图表主要展示数据中的精确位置和地理分布规律,包括等值区间地图、带气泡的地图、带散点的地图等。地图用地理坐标系可以映射位置数据。位置数据的形式有许多种,包括经度、纬度、邮编等,但通常都是用纬度和经度来描述的。

R中ggplot2包的geom_path()和geom_polygon()等函数,结合地理空间坐标系可以使用DataFrame格式的数据,绘制不同投影下的世界与国家地图。Baidumap包可以使用getBaiduMap()函数下载百度局部地图,然后使用ggmap包的ggmap()函数显示;也可以直接使用ggmap包的get_map()函数下载Google局部地图等。另外,tmap包使用SpatialPointsDataFrame和SpatialPointsDataFrame格式的地理数据信息,可以绘制不同的地图。其优势在于可以绘制二维插值地图。

《地图管理条例》第十五条规定:“国家实行地图审核制度。向社会公开的地图,应当报送有审核权的测绘地理信息行政主管部门审核。但是,景区图、街区图、地铁线路图等内容简单的地图除外。”本书原计划用专门的章节讲解使用R语言如何绘制不同地理坐标投影下,从世界到不同国家与区域(包括中国)的实际地图,但是由于出版审核周期等原因已移除。所以以虚拟地图的数据为例讲解不同的地理空间型图表。读者需将绘图方法应用到实际的地理空间型图表。