2026-10-05
热力图色阶怎么读:为什么本站不用彩虹色
guides
热力图色阶怎么读:为什么本站不用彩虹色
顺序色阶与发散色阶承载的信息并不相同。理解明度、色带和色觉安全,才能分清热力矩阵里的数值次序、临界中点与配色转折。
热力矩阵里,颜色很容易被当成数值本身。其实颜色只提示相对位置,单元格数字才给出具体值;如果忽略明度和映射规则,配色转折就可能被误读成数据分界。
明度比色相更适合表达数值变化
Matplotlib 官方文档援引的研究结论给出了明确方向:人脑对明度变化的感知比对色相变化更明显,因此明度单调变化的色阶更容易被理解。
换成读图语言,数值沿既定方向增大时,颜色也应沿稳定的明度方向变化。色相可以辅助区分,却不适合独自承担数值排序。色带看起来发生了变化,并不等于这种变化能准确表达数值差异;追逐更多颜色,也不必然读得更准。
顺序色阶与发散色阶表达的不是同一件事
顺序色阶适合有大小次序的数值:颜色从色带的一端逐步过渡到另一端,提示数值由低到高。发散色阶则适合存在临界中点的数据,例如数值围绕零向不同方向偏离时,两侧颜色需要在中间汇合,让中点成为明确的视觉参照。
Matplotlib 与 ColorBrewer 2.0 都把顺序、发散作为按数据性质选择配色的基本分类。关键不在于哪种色阶更鲜艳,而在于颜色是否对应要表达的关系。只有高低次序时使用顺序色阶更直接;真正关心临界中点及其两侧方向时,发散色阶更匹配。
jet 的中段会制造虚假分界
彩虹色如 jet 的问题,不只是颜色多,而是其明度并不随数值单调变化。当明度在中段改变方向,连续变化的数据可能突然看起来像跨过了某种边界。
如果原表没有业务阈值,也没有对应的数据分组,这种中段转折仍容易被读成分界。读者可能因为颜色“换了一类”而改变判断,但这种类别感只是配色制造的视觉效果,不是数据里新增的结论。
平台和折点会把连续数值切成色带
同一份文档里还有一条容易被忽略的说明:色阶明度出现平台或折点时,相关数值区间会产生条带般的视觉印象。明度平台让一段数值之间的差异被压缩,明度折点则可能让颜色变化突然集中,最终形成并不存在的色带边界。
这里的“带”只是感知结果,不代表数据天然分成若干组。判断具体数值时,仍应读取单元格中的数字,不能仅凭色带边缘划分数据。
红绿同现会增加色觉读取负担
官方文档对色觉缺陷的描述是:最常见的形式涉及红与绿的区分。像 jet 这样的彩虹色把红、绿都放进同一色带,会让部分读者难以判断颜色变化对应什么数值。
因此,配色不应依赖红绿对立关系来承担关键信息。色觉安全不是装饰条件,而是热力图能否被不同读者准确读取的一部分。
本站采用五档青到紫顺序色阶
本站的颜色按当前表中的最小值与最大值线性映射到五档青到紫顺序色阶。它没有彩虹色选项,也不提供业务阈值设置或排名模式。这个口径对应的是“数值在当前表内由低到高”的读取任务,而不是围绕临界中点组织两侧方向,因此采用顺序色阶比彩虹色更贴合这里的读图目标。
矩阵单元格直接显示数值,下方原始表保留输入口径。空白单元格以及 NA / N/A / null 都显示为缺失,不会变成零;灰色虚线表示缺失,黑框表示零值,真实零仍保留色阶颜色。负数保留原符号,但颜色不用于统计检定,也不证明因果或自动预测趋势。五档只是显示映射中的分段,不代表业务阈值。
下次面对自己的表,可以先判断颜色要表达的是单纯次序,还是存在关键中点。前者适合顺序色阶,后者适合发散色阶;随后检查明度是否稳定、是否出现无意平台或折点,以及是否让红绿承担关键区分。如果固定色阶无法表达真正重要的中点,就应接受这项取舍,回到具体数值判断,而不是强行从颜色中解释阈值。