概述
数据可视化(Data Visualization)是将数据转换为图形或图表的技术,使用户能够理解数据、发现模式并做出决策。1
好的数据可视化遵循三个核心原则:准确性、清晰性和美观性。
可视化设计原则
1. 准确展示数据(Truthful)
可视化必须准确反映数据,不扭曲信息:
| 原则 | 说明 | 反面案例 |
|---|---|---|
| 完整比例 | 轴的起点应为0 | 截断Y轴夸大差异 |
| 面积/体积守恒 | 图形大小与数值成正比 | 3D效果扭曲比例 |
| 无装饰性扭曲 | 避免不必要的美化 | 过于复杂的3D饼图 |
2. 支持高效解码(Functional)
用户应能快速从图表中提取信息:
视觉编码优先级(从强到弱):
位置 > 长度 > 角度 > 面积 > 体积 > 颜色饱和度 > 颜色色调
| 视觉通道 | 精度 | 适用数据类型 |
|---|---|---|
| 位置(Position) | 精确 | 定量/有序 |
| 长度(Length) | 精确 | 定量 |
| 角度(Angle) | 中等 | 定量 |
| 面积(Area) | 较弱 | 定量 |
| 颜色饱和度(Saturation) | 较弱 | 有序 |
| 颜色色调(Hue) | 分类 | 定性 |
3. 美学追求(Beautiful)
美观但不过度装饰:
- 减少视觉杂乱
- 使用适当的空白
- 选择协调的配色方案
- 保持简单而优雅
常见图表类型
选择图表的决策树
数据关系
│
├── 比较 → 离散比较 → 柱状图/条形图
│ 排名 → 条形图
│ 时间趋势 → 折线图
│
├── 构成 → 静态 → 饼图/堆叠柱状图
│ 动态 → 堆叠面积图
│
├── 关系 → 两个变量 → 散点图
│ 三个变量 → 气泡图
│
└── 分布 → 单变量 → 直方图/箱线图
多变量 → 散点图矩阵
柱状图(Bar Chart)
适用场景:比较离散类别的值
最佳实践:
- 柱间距约为柱宽的 50%
- 按值的大小排序(除非有固有顺序)
- 使用水平柱状图展示长类别名称
销售数据(2024 Q1)
产品A ████████████████ 1200
产品B █████████████ 980
产品C ██████████ 720
产品D ████████ 580
└───────────────
金额(元)
折线图(Line Chart)
适用场景:展示数据随时间的变化趋势
最佳实践:
- Y轴从0开始(除非有充分理由)
- 线条不超过4条
- 使用实线,避免虚线(虚线通常表示预测)
饼图(Pie Chart)
适用场景:展示整体中的比例
最佳实践:
- 类别不超过7个
- 从12点钟位置开始,顺时针排列
- 避免3D效果
- 考虑用柱状图替代(人眼更易比较长度)
散点图(Scatter Plot)
适用场景:展示两个变量之间的关系
最佳实践:
- 使用点的大小表示第三个变量(气泡图)
- 避免过度绘图(考虑采样或透明度)
- 添加趋势线时标注公式
箱线图(Box Plot)
适用场景:展示分布和离群值
┌─────────────────────────────┐
│ ━━━━ (上须) │
│ ┌───┴───┐ │
─────│ │ ▪ ▪ │ │ ───── 上须
│ │ ▪ │ │
│ │ ▪ ▪│ │
│ └───┬───┘ │
│ ━━━━ (下须) │
└─────────────────────────────┘
│ │ │
└──┬─┘ │
│ └── 离群值
四分位距(IQR)
组件:
- 箱体:包含中间50%的数据(Q1 到 Q3)
- 中位线:数据的中位数
- 须:Q1 - 1.5×IQR 和 Q3 + 1.5×IQR
- 离群值:超出须的点
热力图(Heatmap)
适用场景:展示矩阵数据或密度
最佳实践:
- 使用连续的配色方案
- 提供清晰的图例
- 行和列按逻辑顺序排列
配色方案
分类数据(Qualitative)
用于区分无顺序的类别:
Blues 顺序配色(单色):
■ ■ ■ ■ ■ ■ ■ ■ ■ ■
Paired(配对,适合色盲用户):
■ ■ ■ ■ ■ ■ ■ ■ ■ ■
顺序数据(Sequential)
用于展示有序数据(从低到高):
Viridis(感知均匀,适合色盲):
■ ■ ■ ■ ■ ■ ■ ■ ■ ■
发散数据(Diverging)
用于展示偏离中心的值:
Red-Blue 中心发散:
■ ■ ■ ■ ■ ■ ■ ■ ■ ■
(低) 中性 (高)
色盲友好配色
约8%的男性患有红绿色盲:
| 方案 | 说明 |
|---|---|
| Viridis | 感知均匀,色盲友好 |
| ColorBrewer’s “Set2” | 分类的理想选择 |
| 避免纯红/纯绿 | 使用蓝/橙或棕/青替代 |
可视化常见错误
1. 轴截断
❌ 截断Y轴: ✓ 完整Y轴:
│ │
│ ████ │ ████
│ ████ ████ │ ████ ████
────┼─────────────── ────┼─────────────────
│ A B │ A B
2. 3D效果扭曲
❌ 3D饼图(扭曲比例): ✓ 2D饼图:
╱╲ ┌───────┐
╱ ╲ │ │
╱ ╲ │ │
3D 10% └───────┘
效果 人眼更易准确判断
3. 双重编码
同一数据用两种视觉通道编码,造成冗余:
❌ 双重编码:同时用高度和颜色编码同一数据
✓ 单一编码:用位置编码数据,用颜色编码类别
4. 误导性颜色映射
❌ 从红到绿渐变(红绿色盲不友好):
▓▓▓▓▓▓▓▓▓▓ 0 → 100
✓ Viridis(色盲友好):
▓▓▓▓▓▓▓▓▓▓ 0 → 100
可视化工具与库
| 类别 | 工具/库 | 适用场景 |
|---|---|---|
| 入门级 | Excel, Google Sheets | 快速简单图表 |
| 统计 | R (ggplot2) | 统计分析 |
| Web | D3.js, ECharts | 交互式Web可视化 |
| Python | Matplotlib, Seaborn | 数据分析 |
| BI工具 | Tableau, PowerBI | 商业智能 |
参考
Footnotes
-
参考《The Visual Display of Quantitative Information》by Edward Tufte 和《Fundamentals of Data Visualization》by Claus Wilke ↩