【发布时间】:2017-07-08 01:14:22
【问题描述】:
只是为了好玩,我正在尝试编写鼠标跟踪脚本,我已经完成了基本部分,但我对热图完全没有运气。
我的初始代码是通过 PIL 保存图像(只是为了检查它是否工作),这很好,但显然它只是单个点。然后我尝试实现自己的热图,但发现对于一些非常基本的东西需要半年以上的处理时间,所以这也行不通。
我一直在尝试不同的 matplotlib 示例,但我刚刚意识到“热图”在这种情况下意味着不同的东西。
这不是没有用,但也绝对不是我希望看到的结果。我想知道是否有人知道我实际上将如何获得另一种类型的热图,你会在哪里得到热量?我一直在谷歌上搜索一堆术语,但似乎又回到了相同的 3 个左右的问题。
数据存储在{(x, y): frequency}的字典中,所以为了得到上面的结果,我使用了这段代码(matplotlib部分来自Plotting a 2D heatmap with Matplotlib):
import matplotlib.pyplot as plt
resolution = (1920, 1080)
total = []
for y in range(resolution[1]):
row = []
for x in range(resolution[0]):
try:
row.append(data[(x, y)])
except KeyError:
row.append(0)
total.append(row)
plt.imshow(total, cmap='hot', interpolation='nearest')
plt.show()
它的速度并不重要,因为它将与跟踪分开完成,我只是想要一些最初可以工作的东西。
【问题讨论】:
-
该代码应该可以工作,只要您的数据字典确实按照您的预期格式化。在我看来,你只是在绘制零,所以我建议你看看你的 try/except 语句中发生了什么
-
好吧,如果您查看更高的分辨率,它确实可以工作,但只会绘制单个像素。我追求的是blob风格的热图
标签: python matplotlib heatmap