[数据可视化基础 | 青训营笔记15]

108 阅读19分钟

前言

这是我参与[第五届青训营]伴学笔记创作活动的第 15 天,相信大家平常都会看见一些饼状图和折线图,看起来会让数据一目了然,比较的高端展示的形式,这种展示形式可以称为数据可视化,那接下来我们就了解一下数据可视化如何运用到前端等场景上

数据可视化

本章内容与目标

  1. 了解数据可视化的概念和基本原则 下载.png
  2. 能够识别出不好的,甚至是有误导性的可视化呈现。 e202ff71-ee55-488a-b3b8-314996d703f2.png
  3. 了解一些面向前端的数据可视化工具 045989ff-972f-43bc-b3d4-83d20f144f00.png

什么是数据可视化

生活中的数据可视化

下载.jfif a5de73e5-5cd9-4722-9091-16a53981d1f7.png

d390f131-6561-48d7-9d64-3977b5fc0834.png

dcb2b51f-b740-492c-8bc7-f4fcef7c744f.png

39a283d1-217c-4f31-9c84-d66568c784cd.png

生活中的展示,最常见的还是以上我们看到的比如说: 手机内存页面,像一些员工excel表,或者说收入,或者说是LOL游戏的地图,或者说是温度计,他们本质就是通过图形和文字的组合去达到让人一眼看上去就知道什么东西关联什么东西,有什么区别

什么是数据可视化?

Anything that converts data into a visual representation(like charts, graphs, maps, sometimes even just tables)

下载 (1).jfif 公元前6200年的人类地图 bddffe40-82f8-4e45-a110-e83e7f43f4d2.png

将数据用各种形式的去展示都可以称为数据可视化,如果从整体去看第二张firefox图的话,你可以看到firefox的图标,但是从一小块内容看的话,你会看到很多带有颜色的文字,并且是乱序的

数据可视化分类

科学可视化 81b52dd0-28ba-4bba-867b-f189e9a34265.png 科学实验数据的直观展示

信息可视化 749b113b-56ac-43d2-8113-f63e66cdbadd.png 对抽象数据的直观展示

可视分析 a66428de-dcb2-4965-a071-edaceca04e80.png 对分析结果的直观展现,及交互式反馈,是一个跨领域的方向

运用层面第一张图运用到医学生物领域,第二张是运用到绘画艺术领域,第三张是运用到科技领域;说明数据可视化涉及的领域非常的广阔

为什么要可视化

  1. 记录信息
  2. 证实假设
  3. 分析推理
  4. 交流思想

安斯库姆四重奏 Anscombe's Quartet

下载 (2).png abeeda0e-8b6a-4255-91e1-9e9bd1abab00.png 68517de4-b2c8-4ba8-944d-1589f8392fff.png

通过将数据数据表,用折线图表现,分别对4类数据进行了展示,观察数据的折线图,发现当数据浮动越大时,我们看到的就会有非常的不同

可视化设计原则和方法

糟糕的可视化呈现

dad12da4-ad74-4dc1-9e73-dd5b6d65b62d.png 911800c9-d631-44fe-889b-e80d26e5827c.png

595b4eea-3574-49ba-bc60-f983e76f46f2.png aa85fb57-4947-44ef-9a2f-bc889946dbde.png

dacc8f5e-6e70-464d-9ffb-b4de7ba83271.png

654fd92c-6b29-47f4-ba9e-ab8443bb24cd.png

上述几张图虽然都有各类形式去展示数据,但是当数据非常庞大时,我们还对全部数据进行展示,是非常的不合理的,要么从更高的维度去展示,去除一些细枝末叶,这样就可以让肉眼看上去不会那么受到刺激

错误的可视化呈现

30c28e42-1ecd-46eb-916d-2a857d171e56.png

f1728c6b-a240-4b0b-b4d9-78649d0055f3.png

bbbc0d47-7258-4907-80d6-a226d6940812.png

上几个图可以看出,当没有一个与其数据参照的展示数据,会变得非常的糟糕,并且在展示的手段不统一,让人抓不到重点,数据的不相关性也会让人,摸不着头脑

可视化设计原则

能够正确地表达数据中的信息而不产生偏差与歧义 e2d10b5c-fb50-4bf4-8804-75316ef0989e.png

需要开发者去思考如何展示,展示出来自己内部进行测试,看下反馈

常见的错误可视化

  1. 透视失真 b1e4f82c-b934-4e04-87de-c0b7289c0b35.png

  2. 图形设计 & 数据尺度 b167b2c2-1b42-4dbf-a1db-672021c33bb1.png

  3. 数据上下文 下载 (3).png

透视失真

  • 如果数字是由视觉元素表示的,那么它们应该与视觉元素的感知程度成正比。
  • 使用清晰、详细和彻底的标签,以避免图形失真和含糊不清

图形设计 & 数据尺度

图形的每一部分都会产生对其的视觉预期(visual expectation):

  • 这些预期往往决定了眼睛实际看到的东西
  • 错误的数据洞察,产生于在图形的某个地方发生的不正确的视觉预期推断一个典型的例子:轴刻度,我们期望它从始至终能够保持连贯且一致 30c28e42-1ecd-46eb-916d-2a857d171e56.png

从一眼上去的话,会先看到30数字,然后就不知道看哪了,对数据的展示没有指引内容,让用户只能吸收一点点的信息,从而不能知道你想表达什么

数据上下文

下载 (4).png

谎言因子

  • 控制图形中的谎言因子 (Lie Factor,LF):
    谎言因子: 衡量可视化中所表达的数据量与数据之间的夸张程度的度量方法。
    谎言因子 = 数据所对应的图形元素的相对变化量 / 数据的真实变化量
  • 当 LF = 1 时,我们认为图表没有对数据实时进行扭曲,是一个可信的可视化设计
  • 在实际当中,应当确保各部分图形元素的 LF 在[0.95,1.05] 范围内,否则,所产生的图表认为已经丧失了基本可信度。

就是通过添加参考物,达到对比,显现差距,提升肉眼的冲击力

可视化设计原则

An excellent visualization design gives to the viewer the greatest number ofideas in the shortest time with the leastink in the smallest space.
一个出色的可视化设计可在最短的时间内,使用最少的空间、用最少的笔墨为观众提供最多的信息内涵。
— Edward R. Tufte

  • 准确地展示数据
    Show the data, and tell the truth
  • 节省笔墨
    Use the least amount of ink
  • 节省空间
    Don't waste space
  • 消除不必要的“无价值”图形
    Eliminate non-essentials and redundancies
  • 在最短时间内传达最多的信息
    Give the viewer the greatest number of ideas in the shortest time

Data-ink Ratio

  • 最大化数据墨水占比 (Data-lnk Ratio)
    • 可视化图形由墨水和空白区域构成
    • 数据墨水:可视化图形当中不可擦除的核心部分被称之为“数据墨水”
    • 擦除数据墨水将减少图形所传达的信息量
    • 数据墨水占比:可视化图形中用于展示核心数据的“墨水”在整体可视化所使用的墨水中的比例

b6787443-d47d-4c30-a746-a2b209ef8d60.png

就是想要表达东西的比例不能太小

Data-ink

2b10cb41-b24f-4fdd-9a55-e16f0b7ee602.png 低数据墨水占比 3f2c9da1-b2e9-4827-b93d-2bcb98407791.png 高数据墨水占比

Data-ink ratio案例
  • 绝大多数墨水都是数据墨水
    • 用于绘制散点和对应标签
  • 10% - 20%的墨水是非数据墨水
    • 用于绘制坐标轴和刻度线
    • 并非所有的非数据墨水都没有用(例如坐标轴信息)

下载 (6).png

提高Data-ink ratio

  • 两个擦除原则:
    • 擦除非数据墨水
    • 擦除几余的数据墨水
  • 非数据墨水是指不能描绘有价值信息的墨水
    • 有时,非数据墨水会使数据变得混乱不堪
    • 并非所有的非数据墨水都没有用 (例如坐标轴信息)
  • 元余的数据墨水描述了信息,但它重复显示了信息

588e51ed-2c1a-4ac3-a96f-02ddfe5055b6.png

可视化设计方法

  • 最重要的是展现数据
    Above all show the data
  • 合理范围内,最大化数据墨水占比
    Maximize the data-ink ratio, within reason.
    • 擦除非数据墨水
      Erase non-data-ink, within reason.
    • 擦除冗余的数据墨水
      Erase redundant data-ink

可视化设计原则

  • 准确地展示数据
    Show the data. and tell the truth
  • 节省笔墨
    Use the least amount of ink
  • 节省空间
    Don't waste space
  • 消除不必要的“无价值”图形
    Eliminate non-essentials and redundancies
  • 在最短时间内传达最多的信息
    Give the viewer the greatest number of ideas in the shortest time

视觉感知

可视化致力于外部认知,也就是说,怎样利用大脑以外的资源来增强大脑本身的认知能力.

下载 (7).png

什么是视觉感知

感知

  • 是指客观事物通过人的感觉器官在人脑中形成的直接反映。

感觉器官

  • 眼、耳、鼻、神经末梢那么,视觉感知
    • 就是客观事物通过人的视觉在人脑中形成的直接反映

认知过程

  • 认知心理学将认知过程看成由信息的获取、分析、归纳、解码、储存、概念形成、提取和使用等一系列阶段组成的按一定程序进行的信息加工系统。
  • 科学领域中,认知是包含注意力、记忆、产生和理解语言、解决问题以及进行决策的心理过程的组合

3b876e2d-1e29-42ef-9f83-967a7882b80a.png

认知更多的偏向于心理学方面,在社会的潜移默化的思考模式和心里作用,非常的复杂

相对判断和视觉假象

455865876864565749286555584765298742309847249473247
324879427149572389742982479280742938742564875647654
902842968476745464274784674573847648562484789847985

455865876864565749286555584765298742309847249473247
324879427149572389742982479280742938742564875647654
902842968476745464274784674573847648562484789847985

上面就是通过颜色标注,让我们能快速的从大量的数字之中找到所有的3

相对判断和视觉假象

65dc2683-0bea-4f40-9aed-d4f3fb68ad53.png

微信截图_20230213140836.png

人类的眼镜会受周围的物体去影响我们的判断

结论

  • 人类视觉系统观察的是变化,而不是绝对值,并且容易被边界吸引。
  • 在可视化设计中,设计者需要充分考虑到人类感知系统的这些现象,以使得设计的可视化结果不会存在阻碍或误导用户的可视化元素

视觉突出

研表究明,汉字的序顺并不定一能影阅响读
Aoccdrnig to rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer in wahtorder the ltteers in a wrod are, the olny iprmoetnt tihng is that the frist and lsailtteer be at the rghit pclae. The rset can be a toatl mses and you can sitll raeoit wouthit a porbelm. Tihs is bcuseae the human mnid deos not raed erveylteter by istlef, but the wrod as a wlohe.

因为是同一状态,这个状态是形态统一,方向统一,两者的距离近等,满足以上越多的状态就会肉眼会非常的舒适,也就可以比较容易适应这个状态

视觉感知

引导注意力,高效传达信息

  • 研究表明,人类对于颜色、形状、运动,这些视觉属性,是在不同通道上并行处理的,并且人类能在200ms以内快速辨别,这些属性被称作具有预感知特性。www.csc2.ncsu.edu/faculty/hea…
  • 在一个通道中表达的信息,不会干扰 (很多)在另一个通道上表达的信息,应当使用不同的视觉通道来描画数据不同方面的特征。 (例如一个标记的颜色,并不会影响)
  • 格式塔理论 (Gestalt Laws) 较为系统的对人类如何发现图形元素之间的相关性进行了全面总结,被广泛的应用在了视觉设计当中。

455865876864565749286555584765298742309847249473247
324879427149572389742982479280742938742564875647654
902842968476745464274784674573847648562484789847985

455865876864565749286555584765298742309847249473247
324879427149572389742982479280742938742564875647654
902842968476745464274784674573847648562484789847985

格式塔学派

71163426-a64e-409d-92b4-17156301fad2.jfif

  • Wolgang Kohler 1887-1967
    • 为什么我们在观看事物的时候会把一部分当做前景,其余部分当做背景?
  • Kurt Koffka 1886-1941
    • 为什么我们能区分形状?
  • Max Wertheimer 1880-1943
    • 什么形状是好的?

Tip
依次从左到右

从看事物的角度,宏观,微观,事物的好坏是分别去探讨,让人类对数据的展示形式能有新的理论

格式塔理论

  • 格式塔学派的理论核心是整体决定部分的性质,部分依从于整体。结构比元素重要,视觉形象首先作为统一的整体被认知。感知的事物大于眼睛见到的事物。
  • 格式塔理论 (Gestalt Laws) 较为系统的对人类如何发现图形元素之间的相关性进行了全面总结被广泛的应用在了视觉设计当中。

81629223-a25d-4f8b-b76d-2014524d684f.png

就近原则(Proximity)

  • 当视觉元素在空间距离上相距较近时,人们通常倾向于将他们归为一组。
  • 将数据元素放在靠近的位置可以突出它们之间的关联性

00e312e2-b8e0-4ad3-870a-407395ecf4e6.png

35e8bb0e-950c-4820-b4a4-85ceb6d718bc.png

相似原则(Similarity)

  • 形状、大小、颜色、强度等属性方面比较相似时,这些物体就容易被看作一个整体。 下载 (8).png 83d5f4b0-4513-4190-92b8-46b3498160b8.png

连续性原则(Continuation)

  • 人们在观察事物的时候会很自然地沿着物体的边界,将不连续的物体视为连续的整体。

0db29d2d-d35c-4ed3-942d-e9679cf1110a.png

16255d56-cf15-47bf-872d-8b0a1dfe1a3e.png

闭合原则(Closure)

  • 有些图形可能本身是不完整或者不闭合的,但主体有一种使其闭合的倾向,人们就会很容易地感知整个物体而忽略未闭合的特征。

5f6b04db-d629-4aa6-8e35-c677cb782c4d.png

下载 (9).png

共势原则 (Common movement)

  • 如果一个对象中的一部分都向共同的方向去运动,那这些共同移动的部分就易被感知为一个整体。

下载 (10).png

对称性原则 (Symmetry)

  • 对称的元素被视为同一组的一部分

40085ee6-16ec-4513-a78a-5bdf56aaab2f.png

a5538ca9-f22b-48c4-be3e-e66b053e54f7.png

图形与背景关系原则(Figure-ground)

  • 大脑通常认为构图中最小的物体是图形,而更大的物体则是背景。跟凹面元素相比,凸面元素与图形相关联更多些

d148c62c-e5d4-4979-90b4-34d8a44f149a.png

d2644f9e-376a-4f28-ac40-b165a366636e.png

81629223-a25d-4f8b-b76d-2014524d684f.png

视觉编码

Jacques Bertin

法国制图学家[1918-2010]“Semiology ofGraphics[1967]提出视觉编码的理论原则

ca63db9f-096b-490f-a7b9-4111cf67187f.png

视觉编码(Visual Encoding)

视觉编码是一种 将数据信息映射成可视化元素的技术

  • 数据信息 = 属性 + 值
  • 可视化元素 = 可视化符号 + 视觉通道

300bae50-61de-4eeb-a5f9-6a597ed5386e.png

可视化符号

可视化符号 (Mark) 用于在可视化当中表现数据元素或元素之间的关联

  • 当表示元素时Mark包括: 点、线、面 2fa42c77-ce15-4fe9-aeb1-83016b718cde.png
  • 当表示关系时Mark包括: 闭包、连线 065af3e6-d7d3-49ca-abac-5faa12388322.png

视觉通道

视觉通道 (Channel)
基于数据属性,控制可视化的符号展现样式,例如点根据其所代表的数据属性的不同可有不同的形状与颜色。

  • 视觉通道有两种类型
    • 数量通道(Magnitude Channel)
      用于显示数据的数值属性(定量/定序)包括: 位置、长度、角度、面积、深度、色温、饱和度、曲率、体积。
    • 标识通道(ldentity Channel
      用于显示数据的分类属性 (是什么/在哪里)包括: 空间区域、色向、动向、形状

e076b541-0fd7-4a1b-ba6e-48e216eab658.png

用编程的思想去看视觉编码的话,可以是将对象的里的各类key,value,去map一份,然后通过调用相关的转换工具,再返回到client,其中的相关转换就是数据和视觉编码,就是一个数据对应着一个展示图标,通过集成得到了非常多的展示图标,并且通过排列组合,就能看到数据展示的效果

视觉编码的优先级

不同的视觉编码在表达信息的作用能力上有不同的特性 e076b541-0fd7-4a1b-ba6e-48e216eab658.png

  • 当利用数量通道编码表示数值属性时位置通道是最为精确的,其次是长度角度、面积、深度、色温、饱和度、曲率最后是体积。
  • 当利用标识通道表示分类属性时:划分空间区域最为有效,其后依次是 色向动向、形状

空间 > 形状 > 颜色

视觉编码表达案例

READY?

比较两个圆的面积 微信截图_20230213143342.png 比较两个条形的面积 微信截图_20230213143518.png 1:7 微信截图_20230213143445.png 1:7 微信截图_20230213143619.png

通过以上测试,你会发现我们对长方形的比较得到结果还是的轻松,但是对于圆形就非常困难了

基础统计图表

基础图表 —— 柱状图 (Bar)

  • 将柱子的高度(或宽度) 映射到数值大分
  • 最基础的柱形图,需要一个分类变量和一个数值变量
  • 柱状图必须以0作为基准线,可以表示正值或负值
  • 在柱状图中,柱子可以分组展示
  • 柱状图是比较分类的数据的最佳选择 9d0d96c5-b5ed-4941-a3a5-75d4860557c3.png

柱状图比较适合两个及以上的事物进行差异化比较

基础图表饼图(Pie)

  • 每个扇形的弧长 (以及圆心角和面积)大小表示该种类占总体的比例
  • 饼图最显著的功能在于表现占比
  • 饼图一般需要一个分类数据字段、一个连续数据字段
  • 分类字段的数据,在图表使用的语境下,应当构成一个整体(例如一班、二班、三班,构成了整个高一年级),而不能是独立、无关的。
  • 由于饼图用面积取代了长度,从而加大了对各个数据进行比较的难度,当需要对数据进行比较,分清孰大孰小,尤其是当数据接近时,柱状图更加合适 6a5f6ebe-2ec0-4749-b1e7-15c9e7d4a3f5.png 43946c0e-950a-4782-b2f6-c86cc471a3a5.png

饼状图比较适合来展示一个事物的各个组成

基础图表散点图 (Scatter)

  • 一般通过点在空间上的位置信息来编码数据
  • 点可以根据需要绘制成不同的颜色
  • 点既可以是一个圆形,也可以用其他不同形状来替代形状也是一个重要的视觉通道,用于编码不同数据信息。
  • 可以通过更复杂的组合图形 (glyphs) 来编码多维度数据。
  • 散点图适用于分析变量之间是否存在某种关系或相关性
  • 散点图适用于分析变量之间相关性的强弱,我们可以通过查看图上数据点的密度来确定相关性的强弱

9443d90f-6fa7-4274-95ff-ae2ed19b9726.png 6f15e80b-54fd-4b9c-8852-db6594ae5b0a.png

散点图,适合观测数据的微小变化和不同

折线图

  • 大多数情况下,折线图适用于x轴为连续数据的场景但:
    • 也可以在x轴为离散数据时使用
    • 甚至可以用于分类数据时使用,如果分类数据的顺序是有意义的
    • Tip以上两种情况在插值计算时要格外注意

80712a51-aaa7-4a12-bc64-577587eb2546.png

3db59d5e-2cb6-4ae1-8a1a-b3f8fb53a63b.png 离散数据不应该用曲线插值

折线图适合对一些股票,经济,生产类的数据展示

选择合适的图表

3a8675af-d055-497c-8a99-71250be7f6da.png

3b6b5000-f897-4e37-8171-399a62af79cc.png www.tuzhidian.com/

看上图,相信你可以知道什么类型的数据用怎么样去展示了

面向前端的可视化工具介绍

D3

D3
D3is 是用于数据可视化的开源的JavaScript函数库,被认为是最好的JavaScript可视化框架之一

简单柱状图示例:
observablehq.com/@d3/bar-cha…

287ea3a6-47af-4081-899a-1185110d64f9.png

D3运用json格式展示,我们也可以去修改对应的json的属性值达到修改可视化工具的数据

Vega

2e9e5824-5554-47eb-b179-a713ca34c2a1.png Vega Vega是一种可视化语法。通过其声明式语言,可以用JSON格式描述可视化的视觉外观和交互行为,并使用Canvas或SVG生成视图.

f9ff1348-0252-4c16-81a3-6d944c8351fd.png

ff157dac-8430-4775-af94-e530d3036cbd.png

简单柱状图示例

声明类可视化工具,在未来还是挺有潜力的,因为想vue/reactivejs 框架都在往这上面去靠

G2

下载 (12).png G2
一套面向常规统计图表,以数据驱动的高交互可视化图形语法,具有高度的易用性和扩展性。使用 G2,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表 f4cf4b5c-71fe-4957-9d11-06308f43b6e4.png 69e377c8-759f-4675-89bc-691a405e1604.png 简单柱状图示例

G2 通过UI 交互和数据填充去实现数据的更替和创建

ECharts

下载 (13).png ECharts
ECharts,一个使用 JavaScript 实现的开源可视化库ECharts,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器 (IE9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表

69e67f7e-a9b6-4dc9-bf78-964b799a1cdc.png

096d7d11-2428-44dd-b4f4-72cde319df1a.png 简单柱状图示例

市面上用的最多的就是ECharts,跨平台,不卡顿,扩展性强,生态丰富是它用户群体多的原因

使用图表表达

Step1.

  • A、B、C三个班级期未考试,
    A班高数平均分80,B班90,C班75. 下载 (14).png Step2.
  • A、B、C三个班级期未考试
    A班高数平均分80,B班90,C班75.
    A班大物平均分90,B班70,C班75 下载 (15).png Step3.
  • A、B、C三个班级期未考试,
    A班高数平均分80,B班90,C班75。
    A班大物平均分90,B班70,C班75。
    A班40人,B班35人,C班45人。

如何用图表表达?

我想运用折线图,会比较好展示一点