Matplotlib:imshow 中 set_data 对绘图没有影响

2024-05-09

我有一个奇怪的错误,没有你的帮助我无法修复。当我设置图像后imshow在 matplotlib 中,即使我用方法更改它,它也始终保持不变set_data。看看这个例子:

import numpy as np
from matplotlib import pyplot as plt


def newevent(event):
    haha[1,1] += 1
    img.set_data(haha)
    print img.get_array()    # the data is change at this point
    plt.draw()

haha = np.zeros((2,2))
img = plt.imshow(haha)
print img.get_array()        # [[0,0],[0,0]]
plt.connect('button_press_event', newevent)
plt.show()

我绘制它之后,该方法set_data不会改变情节内的任何内容。有人可以解释一下为什么吗?

EDIT

只是添加了几行来指出我真正想做的事情。 我想在按下鼠标按钮后重新绘制数据。我不想删除整个数字,因为如果只改变一件事那就太愚蠢了。


问题是因为您在第一次调用后尚未更新像素缩放。

当你实例化时imshow,它设置vmin and vmax从最初的数据开始,再也不会触及它。在您的代码中,它设置了两者vmin and vmax到 0,因为你的数据,haha = zeros((2,2)),处处为零。

您的新事件应包括自动缩放img.autoscale(),或通过设置显式设置新的缩放条件img.norm.vmin/vmax到你喜欢的东西。

设置新的功能vmin and vmax is:

img.set_clim(vmin=new_vim, vmax=new_vmax)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib:imshow 中 set_data 对绘图没有影响 的相关文章