当数据有了分布密度:IDMP 热力图揭示的设备运行真相

一家工厂有三十台压缩机,每台都接了温度、压力、振动三个测点。三个月下来,积累了上千万条数据。当工艺主任想看”这些压缩机在哪个工况区间运行得最多”时,他发现所有监控面板上只有折线图和柱状图——它们能告诉他某天下午的温度峰值,却回答不了”数据整体是怎么分布的”。

这不是折线图的问题,而是不同图表类型有各自擅长回答的问题。TDengine IDMP v1.0.19 起在可视化面板中支持热力图(Heatmap),让工业数据分析多了一种组织信息的维度:把两个属性各自分桶,统计落在每对桶区间里的样本数量,用颜色深浅呈现密度分布,让设备运行真相浮现。

一、不同的图表回答不同的问题

工业监控中最常见的图表类型,各自有明确的适用边界:

折线图擅长回答”趋势”——温度在上升还是下降。柱状图擅长回答”比较”——A 泵和 B 泵这个月的总能耗差多少。散点图擅长回答”关系”——转速升高时振动是不是也在变大。

这些图表的共同点是:它们都在按时间维度组织数据。折线图是”值随时间变化”,柱状图是”按时间段汇总”,散点图虽然两个轴都可以是属性,但每个点还是一个时刻的采样。

热力图换了一种组织方式:把两个属性维度同时展开,看数据在二维空间里的密度分布。 它不关心某个时刻发生了什么,它关心所有的历史数据点在两个属性的交叉空间中是怎么聚集的。

举个例子。一台变速设备,转速在 300-1200 之间变化,载荷在 20-100% 之间波动。三个月运行下来,你想要回答:”它在哪个转速-载荷组合区间运行的时间最长?”这个问题用折线图是无解的——转速和载荷各是一条随时间变化的线,两条线在时间上的关系可以大致感知,但它们在整个历史中的联合分布,折线图表达不了。柱状图也无能为力——两个连续变量交叉产生的区间数量太多,不可能用一组柱子表达清楚。

热力图的处理方式是把转速分成若干个桶(比如每 100 转一个桶),把载荷也分成若干个桶(每 10% 一个桶),统计每个交叉格子里落入了多少个数据样本,然后用颜色深浅标记出来。颜色最深的格子,就是设备运行时间最长的工况区间。整个过程就是一个二维分桶统计,没有任何复杂算法,但它呈现的信息——”数据在二维空间中如何分布”——是前面几种图表都做不到的。

二、热力图怎么用

在 IDMP 中使用热力图,配置步骤很简单:X 轴选一个属性,Y 轴选另一个属性,设定每个轴的分桶大小,选择配色方案,加载数据即可。

两个轴都可以自由选择元素的任意属性——转速、温度、压力、振动、电流,也可以是时间维度。没有谁必须是横轴的限制,任意两个属性的交叉分析都支持。

分桶大小决定了热力图的分辨率。比如横轴(转速)每 100 转一个桶,得到的是粗粒度的分布轮廓;每 20 转一个桶,能看到更细的结构,但格子多了,对数据量的要求也更高。桶的粗细没有绝对标准,取决于分析目的——如果想看大致的工况集中区,粗桶够用;如果想定位某个共振转速区间,需要细桶。分桶方式也有两种选择:按固定宽度分(每个桶覆盖相同的数值范围),或者按固定数量分(将整个数值范围等分为指定数量的桶),后者适合快速控制热力图的整体密度。

配色方面,IDMP 支持多种深浅色系,从单色渐变到多色渐变都可以选。深色代表该格子内样本数量多,浅色代表样本少甚至为零。

当数据有了分布密度:IDMP 热力图揭示的设备运行真相 - TDengine Database 时序数据库

有几个使用上的建议值得提一下:

热力图和趋势图是互补的,不是替代关系。 热力图擅长发现分布模式和异常聚集,但看不出变化的先后顺序。如果你在热力图上发现某个转速区间的温度样本异常集中,想了解这个现象是怎么发生的,还是要回到趋势线上去看时间序列。

热力图的数据范围会影响视觉效果。 因为颜色映射是基于当前数据范围内的最小值和最大值自动计算的,如果数据中存在少量极端离群点,会导致绝大部分正常数据都在很窄的颜色区间内,热力图的分布特征就看不清了。这时候适当缩小查询范围或者过滤掉极端值,效果会更好。

分桶数量要跟数据量匹配。 桶分得太细而数据量不够,大部分格子都是空的或者只有一两个点,热力图就变成了一张”稀疏噪声图”,看不到有意义的聚集模式。一般来说,大部分格子的样本数应该在几十到几千之间,太密或太疏都不利于读出信息。

数值跨量级时考虑对数刻度。 有些传感器数据的变化范围跨越多个数量级——比如微量泄漏时的流速和正常流量差了三个数量级。线性刻度下,小值区间的所有数据会被挤在底部几行格子里,完全无法分辨。切换到对数刻度后,每个数量级获得均等的垂直空间,高频小值和稀疏大值都能被看清。

过滤稀疏格子让热点更突出。 热力图中通常散布着大量计数为 1 或 2 的零星格子——它们不代表任何有意义的模式,只是噪声。隐藏这些低计数格子后,真正的聚集区会更加醒目。同时适当给格子之间留一点缝隙,也能让每个格子的颜色更容易被独立辨识。

三、热力图的工业应用场景

场景 1:电流和温度的对应关系是否正常

一台电机的电流和绕组温度存在自然的对应关系:电流越大,温度应该越高,冷却系统正常情况下,两者应该保持一个大致的正比关系。如果这种对应关系被打破——比如电流不高但温度很高——就说明冷却出了问题。

X 轴选电流(每 5A 一个桶),Y 轴选温度(每 3°C 一个桶),加载过去一周的数据。正常情况下,热力图的深色区域会沿对角线分布:低电流对应低温,高电流对应高温。如果深色区域整体向上偏移——电流中等但温度偏高——说明设备在同样的负载下比之前更热了,冷却效率可能在下降。如果深色区域变得分散、不再有明显的对角线形态,说明电流和温度之间的对应关系在变弱,可能意味着温度受到了其他因素(环境、润滑、机械摩擦)的干扰。

这种二维对应关系在折线图上很难判断——电流和温度是两条独立的线,你看到它们都在波动,但两条线之间的”匹配程度”靠人眼几乎无法量化。热力图把两者的关系压成一张密度图,对应关系是否成立、是否在发生变化,一眼就能判断。

场景 2:多台设备,谁的运行温度偏高

一个车间有二十台同型号电机,每台都有绕组温度测点。车间主任想快速了解:这批电机的温度分布有没有差异?有没有哪台电机整体温度偏高?

X 轴选温度(每 3°C 一个桶),Y 轴选设备名称,加载过去一周的数据。热力图会为每台电机生成一行,行内颜色深浅反映该电机在不同温度区间的样本量。正常设备深色集中在低温区间,温度偏高的设备深色集中在右侧的高温区间——哪台电机有问题,一行扫过去就能看到。

如果某台电机的深色区域明显比其他电机偏右(温度高出 5-10°C),即使最高温度还没有触发告警阈值,也说明该电机存在异常。”整体偏高”的信号在逐一翻看折线图时很容易被忽略,但在热力图上,同行设备并列对比,差异会被颜色直接放大。

场景 3:告警在星期几的几点最密集

某工厂运维团队管理着上百台设备,半年来积累了数千条告警记录。运维主管想知道:这些告警在时间上有没有聚集规律?

X 轴选一天 24 小时,Y 轴选一周七天,每个格子的颜色深浅代表该时段内的告警总次数。热力图直接呈现出深色聚集区落在哪几个格子上——比如星期一上午 8-10 点和星期六凌晨 3-5 点。

星期一上午的高发窗口对应每周的开机启动阶段,设备经历周末停机后重新启动,故障率天然偏高。星期六凌晨的高发窗口则对应夜班人员最少的时段,小问题无人及时发现和处理,容易蔓延。运维团队据此调整了巡检排班,两个月后重新生成热力图,深色窗口明显变浅。

四、一张容易被忽视的图

热力图不是什么新发明。生物信息学里用它看基因表达谱,气象学里用它看温度异常的时空分布,网站的运维后台里用它看用户点击热区。它不在工业监控软件的默认图表列表里,不是因为实现不了,而是工业场景过去对”分布”的需求不够强烈。

数据量小的时候,分布分析靠人脑就够了。”转速一般就在 500 到 600 之间”——工程师凭经验就说得出来,不需要一张图来证明。但当测点数量和数据频率同时膨胀后,人对分布的直觉就跟不上了。你不可能凭记忆判断一台设备在过去三个月里的数百万个采样点是在哪个工况区间最密集,但这恰好是热力图一秒钟就能呈现的东西。

热力图把早已在其他行业验证过的分布分析方法带进了工业场景。它做的不是任何复杂计算,就是一个二维分桶统计——但多一种组织数据的视角,有时候能让人看到之前一直存在却从未被注意到的规律。

热力图功能自 TDengine IDMP v1.0.19 起在可视化面板中正式可用。更多信息请访问 idmpdocs.taosdata.com