图表颜色 Chart Colors
@cloudflare/kumo

Kumo 的图表颜色分为三套系统——用于具有内在极性数据的语义令牌、用于名义系列的分类调色板,以及用于密度编码的顺序色阶。为数据类型选择正确的系统是图表中最重要的颜色决策。

颜色系统

仪表板中的图表承担不同的职责,所以颜色并非「一刀切」。 为避免误读数据,我们根据数据任务使用不同的颜色系统。

SystemWhen to useUser taskExamples
SemanticData has inherent polarity — good/bad, pass/fail, blocked/allowedEvaluateWAF actions, Web Vitals, error rates, TLS versions
CategoricalNominal categories with no inherent order or polarityIdentifyCountries, URLs, ASNs, worker versions, service names
SequentialSingle metric varying in magnitude — more = darkerRead magnitudeChoropleth maps, heatmaps, bot score histograms

语义令牌

当数据具有内在极性时,即状态、严重程度和健康度数据,应使用语义图表颜色。语义色向用户传达这份数据需要注意、可能需要采取行动。

语义图表颜色派生自我们现有的徽章/状态语义令牌,使含义在不同组件和场景中保持一致。我们有意为图表调整了色相/彩度,使其在视觉上比徽章更柔和,从而减少视觉疲劳和虚假的紧迫感。

AttentionWarningSuccessNeutralDisabledSkeleton
#FC574A
#F8A054
#00A63E
#B9D6FF
#CBCBCB
#DDDDDD
Bar chart — cache status by day (semantic tokens)

分类调色板

当数据不具有内在极性时,使用分类调色板。调色板的排序保证相邻色位之间有最大的感知距离,确保对色觉缺陷 (CVD) 友好且数据易于区分。

012345
#4290F0
#F5B647
#E8649D
#8D58EE
#50C3B6
#D37536

我们将分类令牌从 16 个 (8 个色相 × 2 个明度变体) 减少到 5 个,因为大多数图表有意一次只展示最主要的类别 (通常为 5 个)。当图表需要超过 5 个系列时,应通过取模循环使用这些令牌 (color = tokens[i % 5]),以保证样式一致且可预期。

分类颜色经过 CVD 模拟器测试,确保色觉缺陷用户仍能区分。下面是绿色盲 (deuteranopia) 用户看到的分类颜色示例。

012345
#4687EE
#DDC74B
#9B9B9A
#0076EB
#A8ACB7
#A69635
Donut chart — traffic by country
Line chart — requests by region

不应仅靠颜色传达信息。 实现折线图时,请确保在调色板之上叠加图案 (如虚线/圆点) 来区分数据点。由于圆点和虚线看起来更浅,我们避免将它们与浅色搭配,否则这些线条可能会淡出。

顺序色阶

一个 5 级的单色相色阶,用于编码密度——当某个指标在一组数值间量级不同、 且颜色强度应强化该量级时使用。 常见用途:分级统计地图 (按国家/地区的流量)、热力图和直方图填充。 顺序色阶不适合区分分类系列——那请使用分类调色板。

浅色模式下更深的级别编码更高的值;深色模式下更浅的级别编码更高的值, 使最醒目的颜色始终对应最大的量级。

Step 1Step 2Step 3Step 4Step 5
#E1EAF4
#8EBCF6
#4290F0
#0E58B4
#03254F
Heatmap — request density by day and hour (sequential scale)