Lecture 4:数据可视化¶
学习目标¶
完成本讲后,应当能够:
- 区分探索性数据可视化(exploratory data visualization)与解释性数据可视化(explanatory data visualization);
- 从比较、分布、构成、趋势、偏差和关系六类问题出发选择图表;
- 说明常见图表的适用场景与限制;
- 识别颜色、坐标轴、三维效果等造成的误导性表达;
- 根据任务选择 Python、电子表格或商业智能(business intelligence,BI)工具。
1. 为什么需要数据可视化¶
数据可视化(data visualization)使用图形、图表和地图等视觉元素表达抽象数据,使人更容易理解、解释和记忆信息。人脑并不擅长直接处理大量表格数字,却擅长识别位置、长度、颜色、形状和模式;可视化正是连接数据与认知的外部工具。
一张有效图表应当帮助读者快速发现:趋势(trend)、异常值(outlier)、群体差异和变量之间的关系,而不是只把原始数字换成更华丽的形式。
探索性与解释性可视化¶
| 类型 | 核心目的 | 典型受众 | 特点 |
|---|---|---|---|
| 探索性可视化 | 在分析过程中发现规律、问题和假设 | 分析者、研究小组 | 可包含多个视图与细节,侧重试探 |
| 解释性可视化 | 向他人清楚传达已经得到的结论 | 管理者、客户、公众 | 信息取舍明确,强调叙事和关键结论 |
探索阶段可以先多看、多试;汇报阶段则要回答一个明确问题:读者看完这张图,应该记住什么?
2. 先根据问题选择图表¶
选图前先确认要表达的关系、受众需要知道什么,以及希望读者采取什么行动。课件将常见任务归纳为六类。
| 要回答的问题 | 推荐图表 | 使用要点 |
|---|---|---|
| 比较(comparison) | 条形图、柱状图、点图 | 统一基线与排序,便于比较长度或位置 |
| 分布(distribution) | 直方图、密度图、箱线图 | 观察中心、离散程度、偏态和异常值 |
| 构成(part-to-whole) | 堆叠条形图、饼图 | 类别较少时使用;多类别时优先堆叠条形图 |
| 时间趋势(trend over time) | 折线图、面积图 | 横轴按时间顺序排列;不要把离散类别伪装成连续趋势 |
| 偏差(deviation) | 发散条形图、控制图 | 用基准线和正负颜色突出偏离程度 |
| 关系(relationship) | 散点图、热力图、气泡图 | 显示变量关系、分组、回归趋势或相关性 |
选图口诀
先问数据之间是什么关系,再决定图表。不要从“我想画饼图或 3D 图”开始。
3. 常见图表¶
3.1 比较与构成¶
- 条形图(bar chart):适合比较离散类别。横向条形图尤其适合类别名称较长或类别较多的情况。
- 柱状图(column chart):与条形图类似,适合并列比较,也常用于按时间展示变化。
- 堆叠条形图(stacked bar chart):同时表达总量与组成部分;但除第一段外,各段缺少共同基线,跨类别比较不够精确。
- 饼图(pie chart):表达一个整体中少量、互斥类别的比例。类别多、差异小或需要跨多个饼图比较时,应使用条形图。
3.2 分布与离群值¶
- 直方图(histogram):把连续变量分箱(binning),显示频数或密度。箱宽会影响形状判断,应尝试合理的分箱数量。
- 密度图(density plot):对分布进行平滑估计,适合比较多组连续数据;样本很少时不应过度解读平滑曲线。
- 箱线图(box plot):以中位数、四分位数和须概括分布,可快速比较多组数据并发现异常值。
- 小提琴图(violin plot):同时给出箱线图摘要和分布形状,但对不熟悉其读法的受众应搭配说明。
3.3 趋势与关系¶
- 折线图(line graph):突出连续时间或有序变量的变化趋势,可比较少量系列。
- 面积图(area chart):强调累计量或变化的持续时间;多系列重叠会降低可读性。
- 散点图(scatter plot):在两个连续变量之间寻找相关、聚类和异常点,可用颜色、形状或分面表示第三个类别变量。
- 热力图(heat map):用颜色编码矩阵或二维网格中的数值,例如相关系数矩阵。色阶应有清晰含义,并考虑灰度可辨性。
- 气泡图(bubble plot):在散点图上用圆面积编码第三个数值变量。面积不易被精确比较,适合强调量级而不是精细排序。
3.4 谨慎使用的形式¶
- 维恩图(Venn diagram)适合展示少量集合的重叠,但不适合精确比较面积。
- 仪表盘(gauge)可显示单个指标与阈值的关系,却占用较大空间;KPI 同时较多时,紧凑的指标卡或条形图通常更清晰。
- 3D 图表会引入透视和遮挡,使长度、面积或体积难以比较。除非三维空间本身是数据语义的一部分,否则优先使用二维图。
- Dynamite plot(均值加误差线柱状图)容易掩盖原始数据的分布、样本量与异常值。小样本或偏态数据应优先展示点、箱线图或分布图。
4. 设计一张有效图表¶
4.1 有效性与表达性¶
有效性(effectiveness)关注视觉编码是否让读者准确读出数值和关系,例如位置通常比面积和颜色更容易比较。表达性(expressiveness)要求图表不表达数据中不存在的事实,也不遗漏完成任务所需的关键信息。
实践中可按以下顺序处理:
- 写下图表要传达的一句话结论;
- 确定数据类型:类别、顺序、时间、连续数值或地理位置;
- 选择能直接支持该结论的图表;
- 用标题、标签、注释和图例降低理解成本;
- 删除不帮助阅读的装饰。
4.2 信息量与可读性的平衡¶
图表需要在信息量(informativeness)与可读性(readability)之间取舍。信息过少可能隐藏重要差异,信息过多又会造成认知负担。可采用小 multiples(同尺度的多个小图)、交互筛选或分层展示来保留细节。
课件还介绍了多图组合(multiple plots)、混合图(hybrid plots)和多坐标轴(multiple axes)。它们可以揭示更多关系,但必须保持尺度、标签和阅读路径清楚。尤其是双轴图,若两条纵轴尺度可任意调整,很容易制造虚假的同步变化。
5. 常见陷阱¶
| 问题 | 风险 | 改进方式 |
|---|---|---|
| 图表类型与问题不匹配 | 读者无法正确比较或推断 | 从要回答的问题出发选图 |
| 截断坐标轴 | 小差异被夸大,尤其在条形图中 | 条形图通常从 0 开始;若截断,明确标识并解释 |
| 坐标轴未标注或间距不等 | 数值含义不清,视觉比例失真 | 标出单位、刻度和时间范围,保持等距 |
| 缺少标题、图例或数据来源 | 图表脱离上下文,难以核验 | 使用结论式标题,补充图例与来源 |
| 颜色使用随意 | 色彩强调了错误重点,或色盲/灰度下不可区分 | 使用语义一致、对比充分的色板;不只依赖颜色区分 |
| 使用 3D 元素比较数量 | 透视让面积、体积和高度产生错觉 | 使用二维位置或长度编码 |
| 用不连续横轴暗示连续关系 | 形成不存在的趋势 | 区分类别轴和连续时间轴 |
坐标轴与比例
坐标轴不一定永远从 0 开始。对于折线图,合适的局部尺度可以帮助观察真实波动;但必须让读者清楚看到完整范围,且不能借此夸大结论。对条形图而言,截断基线通常会严重误导。
6. 工具选择¶
| 工具 | 适用场景 | 特点 |
|---|---|---|
| Excel / Google Sheets | 快速分析、轻量汇报、协作 | 内置常见图表与推荐图表;Google Sheets 适合多人协作 |
| Jupyter Notebook + Python | 可复现的数据探索与报告 | Matplotlib、Seaborn、Plotly 等库覆盖静态与交互式图表 |
| RStudio / Shiny | R 语言分析与交互应用 | 适合统计绘图、仪表盘和网页应用 |
| Tableau / Power BI / Cognos | 业务仪表盘与自助分析 | 拖放式构建、连接多种数据源、便于发布与共享 |
工具不会替代判断。无论使用哪种工具,都应先明确受众、结论和数据关系,再决定视觉编码。
复习清单¶
- 能否根据“比较、分布、构成、趋势、偏差、关系”快速选出合适图表?
- 是否知道散点图、直方图、箱线图、堆叠条形图与热力图各在回答什么问题?
- 是否能解释为什么 3D 图、截断条形图和均值加误差线柱状图可能误导?
- 是否能从标题、坐标轴、图例、数据来源和颜色五方面检查一张图?