Lark 中的图表颜色分为三套体系——用于表达固有极性数据的语义化 token、用于名义型序列的分类调色板,以及用于密度编码的顺序色阶。为数据类型选择合适的体系,是图表中最重要的颜色决策。
颜色体系
仪表盘中的图表承担不同的职责,因此颜色并非「一套通吃」。为避免误读数据,我们根据数据任务选用不同的颜色体系。
| 色彩体系 | 使用场景 | 用户任务 | 示例 |
| 语义化 | 数据本身带有极性——好/坏、通过/失败、阻断/放行 | 评估 | WAF 操作、Web Vitals、错误率、TLS 版本 |
| 分类化 | 名义类目,本身没有顺序或极性 | 识别 | 国家/地区、URL、ASN、Worker 版本、服务名称 |
| 顺序化 | 单一指标按量级变化——数值越大颜色越深 | 读取量级 | 分级设色地图、热力图、爬虫评分直方图 |
语义化 token
当数据具有固有极性时(即状态、严重程度和健康度数据),应使用语义化图表颜色。语义化颜色向用户传达该数据需要关注,可能需要采取行动。
语义化图表颜色派生自我们现有的徽标(Badge)/状态语义化 token,从而在各组件与场景之间保持含义一致。我们有意为图表调整色相/彩度,使其比徽标更不具视觉侵略性,以减少视觉疲劳和错误制造的紧迫感。
#F54A45 | #FF8800 | #2EA121 | #BACEFD | #BBBFC4 | #DEE0E3 |
分类调色板
当数据没有固有极性时,请使用分类调色板。该调色板经过排序,使相邻色位之间具有最大的感知距离,从而确保对色觉障碍友好、数据易于区分。
#4E83FD | #50CEFB | #935AF6 | #FAD355 | #F76964 | #FFA53D |
我们将分类 token 从 16 个(8 种色相 × 2 种明度变体)减少到 5 个,因为多数图表一次只需突出展示排在最前面的少数类别(通常为 5 个)。当图表需要超过 5 个系列时,应通过取模运算循环使用这些 token(color = tokens[i % 5]),以获得一致、可预期的样式。
分类颜色会使用 CVD(色觉障碍)模拟器进行测试,以确保色觉障碍用户仍能区分它们。下面是一个绿色盲(deuteranopia)用户看到的分类颜色示例。
#0081FB | #9EB9FB | #007AF3 | #F2DB5B | #B0A261 | #D7C13F |
不要仅靠颜色来传达信息。 实现折线图时,请确保在调色板之上叠加图案(例如虚线/圆点)来区分数据点。由于圆点和虚线在视觉上更浅,我们避免将其与浅色搭配,否则这些线条可能会淡出而看不清。
顺序色阶
用于编码密度的 5 级单色阶——当某个指标在一组数值之间存在量级差异,且颜色强度应当强化这种量级关系时使用。常见用途:分级设色地图(按国家统计的流量)、热力图和直方图填充。顺序色阶不适用于区分类别型序列——那应该使用分类调色板。
在浅色模式下,较深的色阶代表更高的数值;在深色模式下,较浅的色阶代表更高的数值,从而保证最醒目的颜色始终对应最大的量级。
#E1EAFF | #82A7FC | #3370FF | #1C4CBA | #0C296E |