在我的一个项目中,我想创建用户点击的热图。我找了一会儿找到了这个图书馆 - http://www.patrick-wied.at/static/heatmapjs/examples.html。这基本上就是我想做的。我想在SVG中创建热图,如果可能的话,这只是区别。
我想创建自己的热图,我只是想知道如何做到这一点。我有XY点击位置。每次点击都有不同的XY位置,但可能会有时间例外,只需点击几下即可获得XY位置。
我在网站上找到了一些基于网格的解决方案,你需要检查哪些点击属于这个网格中的同一列,根据这些信息,你可以用红色或橙色填充点击最多的列等等。但对我来说似乎有点复杂,对于更大的网格来说可能更慢。
所以我想知道是否有另一种解决方案如何“计算”热图颜色,或者我想知道上面库中使用的主要思想。
非常感谢
答案 0 :(得分:0)
要制作这种热图,你需要某种可写的数组(或者,就像你说的那样,“网格”)。通过向可写数组添加一个小的“过滤器”子阵列(在每次单击周围对齐),用户点击以累积方式添加到此阵列上。
不幸的是,这种“网格”方法似乎是获得那种光滑,破旧外观的最简单,最简单的方法。幸运的是,这种操作得到了软件和硬件的良好支持,名为“计算机图形学”。
当被视为计算机图形操作时,可写数组被称为“累积缓冲区”。即使点击次数相对较少,过滤器也能为您提供漂亮的blobby外观 - 您可以根据应用需求调整过滤器的大小。
累积用户点击后,您需要将原始累积值转换为某种可见的色阶。这可能涉及查看整个累积缓冲区以找到最大值,并相应地映射您选择的色标。或者,您可以根据鼠标点击次数调整您的比例,或者(如您链接到的演示中一样)只需选择一个固定的比例,无论缓冲区的内容如何。
最后,我应该提到SVG并不适合代表这种图形。它可能应该保存为某种图像文件(.jpg或.png)。