我有一个奇怪的错误,没有你的帮助我无法改正。在matplotlib中使用imshow
设置图像后,即使使用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
不会更改绘图中的任何内容。有人能解释我为什么吗?
编辑
只是加了几行来指出我真正想做什么。 我想在按下鼠标按钮后重新绘制数据。我不想删除整个数字,因为如果只有一件事改变,那就太愚蠢了。
这能给你预期的结果吗?
当我显示两次绘图(在更改为
haha
之前和最后一次)时,它确实会更改。问题是,在第一次调用之后,您没有更新像素缩放。
当您实例化
imshow
时,它从初始数据中设置vmin
和vmax
,并且不再接触它。在您的代码中,它将vmin
和vmax
都设置为0,因为您的数据haha = zeros((2,2))
在任何地方都是零。您的新事件应该包括使用
img.autoscale()
进行自动缩放,或者通过将img.norm.vmin/vmax
设置为您喜欢的值来显式设置新的缩放条件。设置新的
vmin
和vmax
的函数是:相关问题 更多 >
编程相关推荐