【发布时间】:2013-04-06 15:25:55
【问题描述】:
我正在跟踪对象对计算机屏幕指定区域的注视。我正在使用 pyplot 的 hist2d 函数构建凝视热图。
这是一个简单的例子:
figure()
hist2d(xval, yval, bins=1000)
xlim([-6, 6])
ylim([-4.5, 4.5])
如您所见,我的数据范围之外有一个重要区域。但是,我想将此区域设置为表示零值的蓝色。
我第一次尝试使用imshow 可以在这里看到:
figure()
imshow(np.array([[0] * 8] * 12), extent=[-6, 6, -4.5, 4.5])
hist2d(xval, yval, bins=1000)
xlim([-6, 6])
ylim([-4.5, 4.5])
这种方法可行,但在我的数据范围的边界留下一条难看的垂直线。
我的问题如下:
- 有没有办法用零值蓝色填充图形,同时避免
imshow调用 - 如果没有,如何隐藏垂直线?
【问题讨论】:
-
白色区域是故意的,因为没有数据本质上是空的,而不是 0。我认为最好的解决方案是扩展您正在绘制的数据。
-
@sashkello,是的,我意识到白色区域是空的,因此我的问题。我看不出如何在不变性的情况下扩展数据。我的问题是,“我该如何扩展它”。
-
如果是可视化问题,我认为没有必要为此陷入困境 - 只需临时修改数据集进行绘图即可。
-
@shashkello,我明白,但我的问题是我不知道如何修改数据集。直方图计算数据的出现次数,因此为了有零值,需要没有数据。我相信
hist2d会清除每个维度中最大值之外的所有坐标。与此同时,我已经想通了。我只需要弄乱rangekwarg。 -
@sashkello 仅仅为了绘图而修改数据会很快将其与道德问题真正联系起来。在这种情况下,用零填充可能是合理的,但这仍然是一种不好的态度。图的首要职责是准确,其他一切都是次要的。
标签: python matplotlib histogram