热力图是数据可视化项目中,比较常用的显示方式。通过颜色变化程度,他可以直观反应出热点分布,区域聚集等数据信息。
屏幕快照 2017-02-10 下午3.45.52.png
项目概述
我们的项目任务是统计场馆中参观者的实时区域分布情况,通过热力图显示出来。我们考虑采用WPF作为数据显示部分。
实现原理
热力图实现过程就是通过简单的数学变化,将离散的点信息映射到最终图像上的过程。
实现过程如下:
为离散点信息创建一个Mask。Mask是一个圆形区域,半径为该点可以对最终热力图像产生影响的区域半径。中心点的权重为1,越向边缘辐射,权重越低,边缘部分的权重为0。Mask的渐变过程可以考虑多种形式,如线性变化,二次曲线等。
将所有离散点Mask进行叠加,产生一幅灰度图像。相邻Mask的重叠部分进行权重累加操作,最终灰度图中每个像素点的数值大小就是所有和其有关的Mask中的权重之和。 离散点密度越高的地方,灰度图种像素点数值越高,即图像越亮。
根据具体项目不同,可考虑将权重乘上一个固定系数。
将生成的灰度图映射到彩色图像上。
映射对于关系
灰度图
彩色图
0%
(0,0,0)(Black)
25%
(0,0,255)(Blue)
50%
(0,255,0)(Green)
75%
(255,255,0)(Y