设计有效的图表
Design an effective chart
2022年6月6日
一句话判断
这是一堂关于图表设计的系统课——不是教你用什么 API 画图,而是教你”为什么用这个图表不用那个”和”如何让图表对所有人都有效”。
这场 Session 讲了什么
Apple 设计团队的 Halden 和 Lilian 以一个煎饼餐车的销售数据为例,系统讲解了设计有效图表的完整方法论。内容围绕五个核心主题展开:标记(Marks)、坐标轴(Axes)、描述(Descriptions)、交互(Interaction)和颜色(Color)。
Session 不是 Swift Charts 的 API 教程,而是一堂设计思维课。它教你如何从数据目标和用户需求出发,逐步选择合适的图表形式,并确保图表对所有用户(包括使用 VoiceOver 的视障用户)都可用。
核心观点是:有效图表应该聚焦于你要传达的信息,让人一目了然,同时对所有人都可访问。
值得深挖的点
标记类型的选择逻辑。 标记是图表的基本视觉元素——柱状图的柱子、折线图的线条、散点图的点。选择哪种标记取决于你想强调什么。以煎饼销售数据为例:点标记适合识别离群值,但在真实数据(而非理想数据)上很难看出趋势;线标记能清晰展示变化趋势,但数据中有间隔时会产生误导;柱标记最灵活,零值不会造成干扰,视觉重量直接对应数值大小。
一定要用真实数据测试设计。 Session 反复强调这一点。用平滑的理想数据设计的图表,面对真实数据时可能完全失效。点标记在理想数据上看起来不错,但在真实的散乱数据上几乎无法辨识趋势。
无障碍设计的两条路径。 第一,为 VoiceOver 设计数据导航——用户可以通过 VoiceOver 逐一浏览每个数据点的值。第二,使用音频图表(Audio Graphs)——将数据转化为声音,通过音调和节奏让用户”听到”数据趋势。Swift Charts API 自动提供了这两项功能。
坐标轴的固定范围与动态范围。 固定范围适合有明确边界的值(如电池百分比 0-100%),动态范围适合随场景变化的值(如销售量)。选择哪种取决于数据的性质和你要传达的信息。
颜色不只是装饰。 颜色可以增强清晰度——用一个强调色突出关键数据,用中性色淡化背景数据。但不要依赖颜色传达唯一信息,因为不是所有人都能区分所有颜色。
代码片段
import SwiftUI
import Charts
// Swift Charts 基本用法 - 柱状图展示销售数据
struct SalesChart: View {
let salesData: [DailySales]
var body: some View {
Chart(salesData) { data in
BarMark(
x: .value("日期", data.date),
y: .value("销量", data.count)
)
.foregroundStyle(Color.blue.gradient)
}
.chartYAxis {
AxisMarks(position: .leading)
}
.accessibilityLabel("过去30天煎饼销售趋势")
// Swift Charts 自动提供 VoiceOver 数据导航和音频图表
}
}
// 使用线标记展示趋势
Chart(salesData) { data in
LineMark(
x: .value("日期", data.date),
y: .value("销量", data.count)
)
}
// 颜色强调:突出特定数据点
BarMark(
x: .value("日期", data.date),
y: .value("销量", data.count)
)
.foregroundStyle(data.isRecord ? Color.orange : Color.gray.opacity(0.5))
最佳实践
- 先确定图表目标(要传达什么信息),再选择标记类型
- 使用真实数据测试图表设计,不要只用理想数据
- 柱标记是最通用的选择,当不确定时从柱状图开始
- 为坐标轴选择合适的范围策略:固定范围 vs 动态范围
- 始终为图表添加无障碍标签和描述
- 使用音频图表让视障用户也能理解数据趋势
- 颜色用来增强清晰度,但不要让颜色成为传达信息的唯一手段
- 为图表添加标题和摘要描述,帮助用户快速理解图表内容
还有什么值得关注
- 配套观看 “Design app experiences with charts” 了解如何在应用整体体验中嵌入图表
- “Hello Swift Charts” Session 提供了 Swift Charts API 的完整介绍
- WWDC 2021 的 “Bring accessibility to charts in your app” 详细讲解了图表无障碍设计
- 音频图表是一个非常有创意的无障碍特性,值得在任何数据可视化场景中采用