当咱们谈论数据可视化时,咱们实际谈论的是将数据经过系统化、有逻辑的方式转化为最终的视觉呈现。数据可视化图形有不少种类:初看散点图(scatter plot)、饼图(pie)和热力图(heatmap)并无什么共同点,实际上这些图形背后都有一套基础图形语言:捕获数据,并将数据转化为纸上的墨点,或是屏幕上的像素。其内在本质在于:数据可视化将原始数据映射为直观可量化的视觉特征,咱们将其称为图形元素(aesthetics)。app
图片 1.1:图形元素一般包含的信息有 位置(position), 形状(shape), 尺寸(size), 颜色(color), 线段宽度(line width), 线段类型(line type) 等。 有些信息是能够同时是连续型(continuous) 或离散型(discrete) ,好比 position,size,line-width,color ,而其余一般只能是离散型的。字体
上图包含了一些基础的图形元素。图形元素有一些关键特征,首先是位置(position),用来描述元素的位置信息。一般在 标准 2D 空间中,用 x, y 来描述位置信息,固然在 1 维 或者 3 维空间有其余的位置描述方式。 而后,全部的图形元素有 形状(shape), 尺寸(size),颜色(color) 等信息,即便咱们只是绘制黑白元素,咱们也要给图形元素设置合适的颜色用于展现,譬如在白色背景上能够绘制黑色图形,可是白色图形就不行了。最后,咱们在有些场景下会应用不一样宽度的线段和不一样类型的线段(实线、虚线等)。3d
在上图以外,咱们还会遇到更多的图形元素,譬如展现字体是须要考虑字体系列(font family),字体大小(font size),若是要处理图形相互覆盖,还须要考虑到图形透明度变化。cdn
图形元素能够分为两大类:连续型和离散型。连续型含义是任意两个数据之间均可以存在中间状态,好比时间就是连续型的,50s 和 51s 之间还能够存在 50.5s,50.51s 甚至更多。相互在一个房间可人数是离散的,房间能够容纳 5 人或者 6 人,但不能是 5.5 人。图上 position、size、line width,color 能够是连续型的,而 shape 和 line type 一般只能是离散型。htm
接下来咱们来看下须要展现的数据的种类。一般你可能会觉数据应该是数字类型的,但其实数字只是可视化数据中的两个类别而已。以下表所示,除了连续型和离散型数字以外,还能够经过离散型类别(cetegory)、日期或者时间形式(date/time)和文本(text)形式呈现。若是数据类型是数字,咱们称之为定量(quantitative),若是数据类型是其余类型,咱们称之为定性(qualitative)。定性的变量被称为因子(factor),不一样类别(category) 称为级别(level)。因子的级别一般是无序的(dog, cat, fish),不过也能够是有序列表(good,fair,pool)。blog
变量类型 | 示例 | 变量分布 | 描述 |
---|---|---|---|
连续数字 | 1.3, 5.7, 83 | 连续型 | 连续的数字类型,能够是整数,也能够是小数 |
离散数据 | [1, 2, 3] | 离散型 | 离散的数字单元 |
无序类别 | dog, cat, fish | 离散型 | 类别之间无顺序关系,也被称为因子 |
有序类别 | good,fair,pool | 离散型 | 类别之间有顺序关系,也被称为有序因子 |
日期或时间 | Jan. 5 2018, 8:03am | 离散型 or 连续型 | 查看一段连续时间时能够是连续型数据 |
文本 | 个人名字 | 无 or 离散型 | 普通文本 |
表格 2.1排序
下面咱们来看一组具体数据,来自美国 4 个城市的天气数据。数据包含了 5 列信息:Month,Day,Location,Station ID, Temperature。其中 Month 是有序因子(ordered factor),Day 是离散的数字类型,location 和 Station ID 是无序因子(unordered factor),而 Temperature 则是连续的数字值。图片
表格 2.2 一组真实天气数据get
Month | Day | Location | Station ID | Temperature |
---|---|---|---|---|
Jan | 1 | Chicago | USW00014819 | 25.6 |
Jan | 1 | San Diego | USW00093107 | 55.2 |
Jan | 1 | Houston | USW00012918 | 53.9 |
Jan | 1 | Death Valley | USC00042319 | 51.0 |
Jan | 2 | Chicago | USW00014819 | 25.5 |
Jan | 2 | San Diego | USW00093107 | 55.3 |
Jan | 2 | Houston | USW00012918 | 53.8 |
Jan | 2 | Death Valley | USC00042319 | 51.2 |
Jan | 3 | Chicago | USW00014819 | 25.3 |
Jan | 3 | San Diego | USW00093107 | 55.3 |
Jan | 3 | Death Valley | USC00042319 | 51.3 |
Jan | 3 | Houston | USW00012918 | 53.8 |
想实现将数据映射到图形元素,首先须要指定哪些数据类别对应到图形元素哪些特征。举个例子,若是图形上有 x 轴,那咱们就须要考虑指定哪些数据分布在坐标轴上的不一样位置(position),相似的,咱们还要考虑哪些数据来对应到特定的形状(shape)和颜色(color),这种数据和图形元素之间的对应关系就是经过比例尺(scale) 来建立的。比例尺定义了数据和图形元素之间一一映射关系。也就是说,比例尺是一对一的,对于每个数据集,都只能是一个图形元素特征,反之亦然。若是比例尺不是一一对应的,数据可视化就会变得模糊不清。
图片 2.2:比例尺链接数据集到图形元素。图上数字 1 到 4 分别创建了和位置(position)、形状(shape)、颜色(color)的映射关系。在每一个比例尺上,每一个数据都对应一个惟一的图形特征,反之亦然。
咱们再来看实际一点的,以 表格2.2 数据为例,咱们能够分别将 month 和 temperature 映射到 x 轴和 y 轴上。而 location 则做为颜色分类,并生成实线线段。最终生成的效果就是标准的折线图,展现 4 个城市在一年不一样月份的温度趋势图。
图 2.3:4个城市的温度趋势折线图,x 轴表明月份,y 轴表明温度,而颜色用来区分不一样城市
图 2.3 是很是常见的用于展现温度趋势的折线图,也是大部分数据科学家凭直觉就会选择的可视化实现。然而,咱们也能够指定不一样变量来生成不一样比例尺。举例来讲,相比于将 temperature 映射到 y 轴,location 映射为颜色,咱们能够反着来。此时咱们关心的关键变量(temperature)就经过颜色来呈现,咱们须要定义更大的颜色范围来传递更有价值的信息。此时,我会选择用正方块来替换折线,一个色块对应一个城市和月份,下图我按照每个月的平均温度进行对色块的着色。
图 2.4:此时 x 轴仍是月份,可是 y 轴变成了城市,而颜色经过温度来区分
我要强调一下,图 2.4 上有两种基于位置的比例尺,分别是基于 x 轴分布的 month,和基于 y 轴分布的 location,且二者都不是连续型变量。其中 Month 是有序因子并包含 12 个级别(level), 而 Location 是 4 个层级的无序因子,二者都是离散型比例尺。离散型数据的因子一般在坐标轴上等间距分布,若是是有序的(好比 Month),则会按照适当的顺序分布,若是是无序的(好比 Location),那么能够按照需求自由分布。图 2.4,我按照从冷(Chicago)到热(Death Valley)生成一个渐变效果,固然我也能够采用其余的排序方式。
图 2.3 和图 2.4 都应用了 3 个比例尺 —— 2 个基于位置的比例尺和 1 个基于颜色的比例尺,这是可视化图形的经常使用比例尺数量,固然咱们也能够应用更多的比例尺数量。图 2.5 上就应用了 5 个比例尺 —— 2 个位置比例尺,1 个 颜色比例尺,1 个尺寸比例尺和 1 个形状比例尺,每一个比例尺都表明了数据的不一样维度。
图 2.5: 汽车燃油效率与排量之比。图上应用了 5 个维度来展现数据。(i) x轴(发动机排量); (ii) y 轴(燃油机效率); (iii) 点颜色(功率); (iv) 点尺寸(汽车重量); (v) 点的形状(气缸数量); 4/5 的维度(排量、效率、功率、重量)是连续型数据,只有剩下的气缸数量字段能够认为是离散型数字,或是定性有序类型。