课程来源:本文根据北京大学公开课《数据可视化》(共63讲)的学习笔记整理而成。该课程由北京大学智能学院袁晓如研究员主讲,课程内容涵盖数据可视化引论、数据抽象、数据编码、交互操作、表格与高维数据可视化、图与网络数据可视化等多个模块。笔者在学习过程中对“交互分类”相关章节做了重点梳理,现将笔记整理分享,希望能为对数据可视化感兴趣的读者提供一份参考。由于笔者水平有限,笔记中难免有疏漏或不准确之处,恳请读者指正。
1. 可视化基础:编码与交互
数据可视化由两个基本部分构成:
第一,编码(Encoding) ——如何把数据映射到平面上。这包括选择合适的图表类型(排列),以及决定用什么视觉特征(颜色、大小、形状、位置等)来代表不同的数据属性(映射)。
第二,交互(Interaction) ——可视化不应该是静态的。用户可以通过各种操作对视图进行分面、分离或简化,从而更深入地理解数据。
简单来说,编码解决“怎么看懂”的问题,交互解决“怎么看全”和“怎么看深”的问题。编辑
2. 处理复杂数据的四种思路
面对高维度、大体量的数据,可以从四个方向来思考如何处理:
| 思路 | 说明 |
|---|---|
| 派生新数据 | 在原始数据基础上计算新的字段(如增长率、平均值),并在视图中展示 |
| 视图随时间变化 | 让视图支持动态更新,展现数据在时间轴上的演变 |
| 多个视图表达 | 用多个相关联的视图从不同角度展示同一份数据 |
| 减少单视图信息量 | 精简每个视图中显示的数据项或属性数量 |
这四种思路是宏观层面的目标,而下面要介绍的三种手段则是实现这些目标的具体操作方法。编辑
3. 三种交互手段
3.1 视图操纵(View Manipulation)
直接对当前视图本身进行操作,不改变数据,只改变观看方式:
- 改变:缩放、平移、旋转、切换坐标尺度
- 选择:点击或框选高亮特定数据点,查看详情
- 导览:在层级数据中“钻取”,从总览进入细节
3.2 视图分面(View Faceting)
把一个视图拆成多个子视图:
- 并置:多个视图并列放置
- 分隔:按某个属性切成多个小格子(小多组图)
- 叠加:多个图层叠在同一坐标系中
3.3 约简(Reduction)
减少视图中显示的数据量:
- 过滤:按条件筛选数据项
- 聚集:将多个数据点汇总为统计值
- 嵌入:在整体视图中内嵌局部细节
4. 并置视图的三种考量
并置视图是将多个视图并列放置。但“放在一起”还不够,好的并置设计需要从三个维度来考虑:
① 编码是否共用? 所有视图用相同的刻度与颜色体系(便于直接对比),还是各自独立(便于观察局部特征)?
② 数据是什么关系? 视图之间可能是完全相同的数据(只是展示方式不同),也可能是部分重叠(有交集也有各自独有的数据),还可能是完全不同的数据集。
③ 导航是否共用? 缩放或平移一个视图时,其他视图是否跟随?
其中,联动高亮是并置视图最常用的交互方式:在一个视图中选中一些数据点,其他视图中对应的部分会被同步高亮。这种机制让用户即使在不同的视觉形态之间,也能追踪同一批数据。
编辑
5. 关联高亮:跨视图追踪数据
关联高亮(Brushing & Linking,也称刷选与链接)的核心理念很简单:在一个视图中选择数据,在其他视图中看到对应的数据被高亮。
它的工作流程分三步:
- 刷选(Brushing) :用户在一个视图中通过点击、框选等方式选中一批数据
- 链接(Linking) :系统根据数据的唯一标识,在其他视图中找到对应的记录
- 高亮反馈:匹配到的数据在其他视图中被高亮显示,未匹配的变灰或淡化
这个机制之所以有效,前提是各视图共享同一份数据(或至少共享共同的数据标识符)。如果视图之间没有任何共同标识符,就无法实现基于数据记录的关联高亮——但可以退而采用基于共享维度(如同一个时间轴)的同步响应。
关联高亮是可视化系统中最高效、最普遍的交互方式之一,它把分散的多个视图串联成了一个联动的分析工作台。编辑
6. 动态查询:拖出来的数据筛选
6.1 什么是动态查询
动态查询是一种交互方式:用户通过拖拽滑块、点击按钮等方式调整筛选条件,视图实时更新显示筛选结果。编辑
核心要义是:操作即反馈,选择即结果。 不需要点击“确认”或“搜索”按钮。
6.2 四个特征
- 操作与反馈同步:拖拽滑块时,视图同步变化
- 快速、渐进、可逆:每一步都有反馈,反向拖拽即可撤销
- 直接操控:用拖拽和点击代替键盘输入
- 即时连续:视图平滑更新,没有跳跃
6.3 与传统查询的对比
传统数据库查询(如SQL)是这样的:
sql
SELECT house FROM east_bay
WHERE price < 1000000 AND bedrooms > 2
ORDER BY price
它的特点是:需要学习语法、严格匹配、提交后等待结果、以表格形式返回。用户需要知道自己要找什么。
而动态查询的特点是:无需学习语法、连续调整、毫秒级反馈、以可视化图表呈现。它帮助用户发现自己要找什么。
两者的区别,本质上是“提问-回答”与“探索-发现”两种范式的区别。
6.4 动态查询的利弊权衡
任何一种交互技术都有其适用的边界。动态查询在带来便利的同时,也存在一些需要正视的局限性。以下内容基于对相关研究的梳理以及对实际使用场景的观察。
优势
① 对新手和专家都能有效操作
动态查询的交互方式(拖拽滑块、点击按钮)几乎不需要学习成本,新手可以直接上手;对于有经验的用户,它提供了一种快速验证假设的方式,可以大幅缩短从“产生问题”到“获得反馈”的路径。这种“低门槛、高效率”的组合在交互设计中并不常见。
② 探索数据的快速方式
连续调整、实时反馈的特性使得用户可以快速试探数据的边界——例如通过拖拽阈值观察哪些数据点被保留或切除,或者通过多维度组合寻找特定子集。与传统“提交-等待-查看”的查询模式相比,动态查询更接近一种“对话式”的探索体验。
局限性
① 只适用于相对简单的查询
动态查询擅长处理由多个简单条件组合而成的筛选(如价格区间 + 卧室数量),本质上是SQL中 WHERE 子句部分功能的图形化表达。但对于涉及多表连接、嵌套子查询、复杂聚合或窗口函数等高级逻辑的场景,滑块和按钮无法有效表达。
② 条件较多时操作可能变得繁琐
当筛选条件超过一定数量(比如7~8个)时,逐一调整每个滑块的操作成本会明显上升,体验变得冗长。这个问题在高维数据分析中尤为突出,学界也常将其视为“维度灾难”在交互层面的体现。
③ 屏幕空间与数据显示的矛盾
动态查询需要将控件区域(滑块、按钮)与主视图同时呈现。当数据集的属性较多或可视化本身需要大面积展示时,屏幕空间会变得紧张,尤其是在笔记本电脑或移动设备上。如何在有限的空间中合理安排控件与视图,是一个值得重视的设计问题。
编辑
7. 约简:给数据“做减法”
实际工作中,数据要么条目太多(行数庞大),要么属性太多(列数繁多)。约简的目标就是有策略地减少单个视图中显示的信息量。
7.1 过滤(Filter)
按条件筛选,只保留满足条件的数据。
- 优点:直观明了,容易理解
- 需要注意:被过滤掉的数据完全不可见,用户容易忘记它们的存在(所谓“out of sight, out of mind”),可能影响对数据全貌的判断
7.2 聚集(Aggregate)
把多个数据点合并成一个统计值(求和、平均、计数等)。
- 优点:帮助把握整体趋势
- 需要注意:会丢失个体差异和异常值信息(“信号丢失”)
过滤和聚集并不互斥,经常组合使用——比如先筛选出某段时间的数据,再按月做聚集。
编辑
8. 交叉过滤:多个筛选器协同工作
交叉过滤(Cross-filtering)可以理解为 “多个动态查询 + 全局联动刷新” 。
它的核心机制是:多个过滤器同时作用于同一份数据,任何一个过滤器的变化,都会触发所有其他视图和控件同步更新。
举个例子:你有价格、卧室数量、房屋类型三个筛选器。当你调整了价格区间,不仅主视图更新了,卧室数量的直方图也会自动更新为“当前价格区间下的卧室分布”——而不是原始的全局分布。
这正是“不同的过滤方法可以相互组合”的体现。过滤器之间互相“交叉”影响,而非彼此孤立。
Crossfilter 是一个专门实现这种交互的 JavaScript 库(由 Square 公司开发),能在百万级数据上实现毫秒级响应。编辑
9. 空间聚集与MAUP
9.1 什么是空间聚集
当数据量极大时(比如海量的GPS点),逐个绘制每个点既不现实也没必要。常用的做法是:把空间划分成若干区域,统计每个区域内的数据数量,然后用颜色深浅来表示——这就是等值区域图(Choropleth Map)。
从本笔记的框架来看,空间聚集是约简中聚集在空间维度上的具体应用。
9.2 MAUP:一个无法回避的问题
MAUP(Modifiable Areal Unit Problem,可塑地区单元问题)是空间数据分析中一个经典问题。它的核心意思是:对同一组数据,仅仅因为划分区域的方式不同(边界不同或尺度不同),就可能得出不同的统计结论。
MAUP包含两个相互关联的方面:
① 尺度效应(Scale Effect) :聚合的颗粒度不同(省 vs. 市 vs. 街道),结论可能不同。宏观上看到的正相关,在微观上可能变成负相关——这就是所谓的“生态学谬误”。
② 区域效应(Zone Effect) :尺度相同但划分边界不同,结论也可能不同。一个典型的例子是Gerrymandering(操纵投票区边界) ——通过刻意调整选区边界来影响选举结果。
MAUP之所以是“问题”而非“错误”,是因为它无法被消除——只要做空间聚集,就必然要选择某种划分方案,而没有任何一种方案是绝对客观的。编辑
9.3 可视化设计中的应对思路
虽然无法消除MAUP,但可以通过设计让用户意识到它的存在:
- 提供多尺度切换:让用户在不同聚集尺度之间切换观察
- 采用规则网格:用六边形或正方形网格替代行政边界,减少边界划分带来的偏差
- 显示可信度信息:同时展示每个区域内的数据量,数据量过少的区域应谨慎解读
术语表
| 中文 | 英文 | 简要说明 |
|---|---|---|
| 编码 | Encoding | 将数据映射为视觉元素的过程 |
| 视图操纵 | View Manipulation | 缩放、平移、选择、导览等操作 |
| 视图分面 | View Faceting | 将视图拆分为多个子视图 |
| 约简 | Reduction | 减少数据项或属性 |
| 并置 | Juxtaposition | 多个视图并列放置 |
| 关联高亮 | Brushing & Linking | 跨视图同步高亮被选中的数据 |
| 动态查询 | Dynamic Query | 通过拖拽控件实时筛选数据 |
| 交叉过滤 | Cross-filtering | 多个过滤器协同联动 |
| 空间聚集 | Spatial Aggregation | 将点数据聚合为区域统计值 |
| MAUP | Modifiable Areal Unit Problem | 分析结果依赖于空间单元划分方式的问题 |
笔记整理自公开课内容,如有不当之处,欢迎指正。
课程来源
本文根据北京大学公开课《数据可视化》(共63讲)的学习笔记整理而成,课程链接 :
【公开课】北京大学:数据可视化