首页 文章

一种基于 Value 的热图算法

提问于
浏览
5

我正在寻找有关热图算法的一些文档 . 我发现了一些实现,但它们不像我看的那样计算渐变 . 我想将数据点与值相关联,而不是通过“命中”来计算 .

我发现的唯一资源是来自openheatmap.com的源代码 . 这是一些很棒的东西,但我希望动态创建渐变而不是历史数据集 .

我正在寻找一个类似于a world of tweets的实时热图 .

4 回答

  • 0

    从我收到的答案中我得出了自己的结论,请评论其准确性 .

    因此,对于基于“命中”的热图,您有一个值为0的像素矩阵:

    [0 0 0]
    [0 0 0]
    [0 0 0]

    当你有一个命中时,你增加相应的元素 .

    [1 3 2]
    [4 1 2]
    [0 3 5]

    如果您有值而不是命中,则将值添加到矩阵 . 例如,让我们使用美元金额给出这个示例矩阵:

    [$ 20.34 $ 42.42 $ 55.23]
    [$ 45.87 $ 00.87 $ 03.75]
    [$ 08.99 $ 32.05 $ 88.65]

    然后我们normalize数据 . 这会产生:

    [.897 .973 .984]
    [.977 .087 .351]
    [.669 .959 .994]

    现在,您可以使用您选择的算法进行传播或模糊 . 喜欢Gaussian Blur .

    然后,您可以将所需的渐变应用于这些值 .

  • 0

    嗯,如果你想从"hits"的散布中推断一个"heat map"(像素值的规则网格)(就像在推文世界中那样),一个明显的方法就是首先只计算每个像素的精确点击次数 . 像素(即,将命中位置量化到网格),并应用卷积滤波器,例如一个高斯滤波器,对数据来说是"blend" . 见http://en.wikipedia.org/wiki/Gaussian_blur .

  • 0

    如果你可以读取/转换OpenGL片段着色器 - here it is . 实时只是意味着您必须动态地重新计算热图值 .

    心连心!

  • 6

    我只是看了一下Tweet世界 . 看起来每个推文都会为该位置增加一些 Value ,并且所有位置都会衰减 - 可能会随着时间的推移呈指数级增长 . 这将允许在不规则时间添加数据,同时显示看起来像平均排序的数据 . 所以对于 Map 中的每个像素做:

    在固定的时间间隔:输出=输出* 0.99

    发生打嗝时:output = value_of_burp

    这些将分别应用于 Map 中的每个像素 . 您可以使用您想要的任何涂抹将值扩展到像素上 - 甚至可以在圆上应用相同的值 . 当然0.99应该手动调整,直到你得到你喜欢的东西 .

    指数衰减意味着即使是非常活跃的像素也会有一个有限的输出 - 换句话说它是稳定的 .

相关问题