2026-10-05

热力图色阶范围怎么读:最小值到最大值会压缩什么

guides

热力矩阵里,真正决定读图结果的不是颜色叫什么,而是色阶先把数值划成了哪些区间。同一种颜色只表示数值落在同一档,不能单独证明数值相同;范围一变,颜色的疏密也会跟着变。

色阶范围本质上是一张分配表

色阶范围就是“哪些数值区间分配到哪些颜色”的定义。relitu.cn 取当前表全部非缺失数值的最小值为 low、最大值为 high,再用 (value-low)/(high-low)*5 把相对位置线性分到五档青到紫顺序色阶;脚本再通过 floor 确定档位。这里的刻度表达相对位置,不是预先固定的业务界限。负数保留原符号,零值保留色阶颜色并加黑框。灰色虚线表示缺失,空白以及 NA / N/A / null 都不会被当成零。

域外值必须先定处理规则

Matplotlib 官方文档在 Normalize 中说明,范围内的值线性映射到 [0,1],范围外的值如何处理则取决于裁剪设置。如果不用当前数据的最小值和最大值,而是另定固定上下界,域外值就成了必须回答的问题。

裁剪(clip)会把低于下界的值都映到下端颜色,把高于上界的值都映到上端颜色。同一侧的超出值彼此无法区分,也会和端点附近的真实值混成同一种颜色。不裁剪时,低于下界的值会落到 0 之前,高于上界的值会落到 1 之后,映射结果位于 [0,1] 之外,因此色阶还要能够表达“低于”和“高于”。普通色阶不会自动补足这层含义。

极远端数值会压缩中间层次

如果某个极远端数值参与 low 和 high 的计算,它就可能把范围撑大。大量位于主体区间的数会在相乘后集中到少数归一化位置,再被 floor 分进同一档,于是矩阵看起来一片同色。

这里说的“离群值”只是在讨论端点被谁拉远,不表示本站已经作出统计判定。颜色合并说明刻度分辨率有限,不说明单元格数值相同。矩阵显示数值,因此档内差异仍然可读。

业务阈值是另一种映射

业务阈值型范围通常先划定若干业务界限,再把每个区间映射到一种颜色。Matplotlib 官方文档中的 BoundaryNorm 就是这种离散分箱映射,各区间按整数颜色索引处理。它能表达预定的分类口径,代价是同一档内部的数值差异会从颜色中消失。

本站没有业务阈值设置,也没有让用户自定分箱边界。页面里的五档来自全表最小值到最大值之间的线性分配,不能直接解释成预先定义的业务类别。

本站默认范围及其代价

本站让全表共用当前非缺失数值的最小值与最大值,没有 vmin/vmax 输入框、clip 开关或归一化口径选项。因此,只要当前表不变,非缺失数值本身不会落在自动范围之外;这也不等于本站提供了可切换的裁剪方案。

这种规则的直接代价是:极远端数值一旦撑大范围,中间数值就容易被压进同一档。矩阵单元格仍直接显示数值,下方原始表也保留输入口径,便于核对。CSV 全程在浏览器本地解析,不上传、不保存、不发送。颜色只表示当前表中的映射位置,不做统计检定、预测或因果判断。

读图时应把同色视为“需要继续看数值”,而不是“数值相等”。若研究需要固定范围、低于与高于的独立表达,或业务阈值分箱,就必须另外说明映射规则;不能把本站当前色阶直接当成这些规则的实现。