这是我参与「第四届青训营」笔记创作活动的的第5天
什么是数据可视化
生活中的可视化:
- 我们手机上的存储空间示意图,它使用环形图展示了手机中各种数据在手机空间里的占比;
- 我们常用的地图也是数据可视化的一种形式;
- 生活中用到的体温计,它将我们的体温以水银的高度进行展示,通过观察刻度得知我们的体温;
- ......
概念:
Anything that converts data into a visual representation(like charts, graphs, maps, sontimes even just tables)
任何一种将数据转换成一种可视化呈现形式的一个东西,都是数据可视化的呈现,包括统计图表、关系图、地图,甚至是表格等等。它的类型是十分丰富的。
数据可视化的分类:
- 科学可视化:科学实验数据的直观展示。
- 信息可视化:对抽象数据的直观展示。
- 可视分析:对分析结果的直观展示,及交互式反馈,是一个跨领域的方向。
为什么要数据可视化:
- 记录信息。
- 分析推理。
- 证实假设。
- 交流思想。
可视化设计原则和方法
这里先举出一些反面案例:
糟糕的可视化呈现
这些图看起来十分混乱:有的图给我们的视觉冲击力和压迫感较强,可能会导致观察者看这些图的意愿较低;有的图提供的信息特别多,观察者很难从图标中提取到有效的信息......因此这些可视化设计都是比较糟糕的,需要加以改善。
常见的错误可视化
- 透视失真(经常发生在 3D 可视化中)
这张图片中,紫色的占比其实是比绿色要大的,但由于 3D 图像近大远小,使得绿色块看起来占比最大,这就给观众造成了一种误导。
因此:
- 如果数字是由视觉元素表示的,那么它们应该与视觉元素的感知程度成正比;
- 使用清晰、详细和彻底的标签,以避免图形失真和含糊不清。
- 图形设计 & 数据尺度
这张图片中,60 之前的数据是每一大格跨度 10 ,但 60 之后的数据是每一大格跨度 20 ,如果把刻度边的数字擦除,观察者就会按照自己的预期错误猜测了后面的数据跨域,这也造成了误导。
因此:
- 图形的每一部分都会产生对其的视觉预期,这些预期往往决定了眼睛实际看到的东西;
- 错误的数据洞察,产生于在图形的某个地方发生的不正确的视觉预期推断。
- 数据上下文
- 对图表补充上适当的说明,使其与图表内容强相关。
可视化设计原则
- 准确地展示数据
- 节省笔墨
- 节省空间
- 消除不必要的“无价值”图形
- 在最短时间内传达最多的信息
节省笔墨: 即最大化数据墨水占比。可视化图形由墨水和空白区域构成,而绝大多数墨水都是数据墨水(可视化图形中不可擦除的核心部分被称为“数据墨水”),用于绘制散点和对应标签,10% - 20% 的墨水是非数据墨水,用于绘制坐标轴和刻度线(并非所有的非数据墨水都没有用,比如坐标轴信息等)。
面向前端的可视化工具介绍
- D3
D3.js 是用于数据可视化的开源的 JavaScript 函数库,被认为是最好的 JavaScript 可视化框架之一。
简单柱状图示例:observablehq.com/@d3/bar-cha…
- Vega
Vega 是一种可视化语法,通过其声明式语言,可以使用 JSON 格式描述可视化的视觉外观和交互行为,并使用 Canvas 或 SVG 生成视图。
简单柱状图示例:vega.github.io/editor/#/ex…
- G2
一套面向常规统计图表,以数据驱动的高交互可视化图形语法,具有高度的易用性和扩展性。使用 G2 ,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表。
简单柱状图示例:g2.antv.vision/zh/examples…
- ECharts
这个库大家应该用的比较多,相对熟悉一点,这里不赘述了。
简单柱状图示例:echarts.apache.org/examples/zh…