Chart Colors 图表颜色
@lark-ui/core

Lark 中的图表颜色分为三套体系——用于表达固有极性数据的语义化 token、用于名义型序列的分类调色板,以及用于密度编码的顺序色阶。为数据类型选择合适的体系,是图表中最重要的颜色决策。

颜色体系

仪表盘中的图表承担不同的职责,因此颜色并非「一套通吃」。为避免误读数据,我们根据数据任务选用不同的颜色体系。

色彩体系使用场景用户任务示例
语义化数据本身带有极性——好/坏、通过/失败、阻断/放行评估WAF 操作、Web Vitals、错误率、TLS 版本
分类化名义类目,本身没有顺序或极性识别国家/地区、URL、ASN、Worker 版本、服务名称
顺序化单一指标按量级变化——数值越大颜色越深读取量级分级设色地图、热力图、爬虫评分直方图

语义化 token

当数据具有固有极性时(即状态、严重程度和健康度数据),应使用语义化图表颜色。语义化颜色向用户传达该数据需要关注,可能需要采取行动。

语义化图表颜色派生自我们现有的徽标(Badge)/状态语义化 token,从而在各组件与场景之间保持含义一致。我们有意为图表调整色相/彩度,使其比徽标更不具视觉侵略性,以减少视觉疲劳和错误制造的紧迫感。

AttentionWarningSuccessNeutralDisabledSkeleton
#F54A45
#FF8800
#2EA121
#BACEFD
#BBBFC4
#DEE0E3
柱状图——按天展示缓存状态(语义化 token)

分类调色板

当数据没有固有极性时,请使用分类调色板。该调色板经过排序,使相邻色位之间具有最大的感知距离,从而确保对色觉障碍友好、数据易于区分。

012345
#4E83FD
#50CEFB
#935AF6
#FAD355
#F76964
#FFA53D

我们将分类 token 从 16 个(8 种色相 × 2 种明度变体)减少到 5 个,因为多数图表一次只需突出展示排在最前面的少数类别(通常为 5 个)。当图表需要超过 5 个系列时,应通过取模运算循环使用这些 token(color = tokens[i % 5]),以获得一致、可预期的样式。

分类颜色会使用 CVD(色觉障碍)模拟器进行测试,以确保色觉障碍用户仍能区分它们。下面是一个绿色盲(deuteranopia)用户看到的分类颜色示例。

012345
#0081FB
#9EB9FB
#007AF3
#F2DB5B
#B0A261
#D7C13F
环形图——按国家/地区展示流量
折线图——按地区展示请求数

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

顺序色阶

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

在浅色模式下,较深的色阶代表更高的数值;在深色模式下,较浅的色阶代表更高的数值,从而保证最醒目的颜色始终对应最大的量级。

第 1 步第 2 步第 3 步第 4 步第 5 步
#E1EAFF
#82A7FC
#3370FF
#1C4CBA
#0C296E
热力图——按天和小时展示请求密度(顺序色阶)