ahe*_*elm 14 python matplotlib
我有一个奇怪的错误,如果没有你的帮助,我无法修复.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()
Run Code Online (Sandbox Code Playgroud)
绘制之后,该方法set_data不会改变绘图中的任何内容.有人能解释一下为什么吗?
编辑
只是添加了几行来指出我真正想做的事情.我想在按下鼠标按钮后重绘数据.我不想删除整个数字,因为如果只有一件事发生变化就会很愚蠢.
Red*_*bts 20
问题是因为您在第一次调用后没有更新像素缩放.
当你实例imshow,它设置vmin并vmax从初始数据,并且永远不会再接触它.在你的代码,它同时设置vmin和vmax为0,因为您的数据,haha = zeros((2,2))是处处为零.
您的新活动应包括自动缩放img.autoscale(),或通过设置img.norm.vmin/vmax您喜欢的内容来明确设置新的缩放术语.
这会给你带来你期望的输出吗?
import numpy as np
from matplotlib import pyplot as plt
haha = np.zeros((2,2))
img = plt.imshow(haha)
print img.get_array() # [[0,0],[0,0]]
haha[1,1] += 1
img.set_data(haha)
img = plt.imshow(haha) # <<------- added this line
print img.get_array() # [[0,0],[0,1]]
plt.show()
Run Code Online (Sandbox Code Playgroud)
当我显示该图两次(一次在更改为 之前haha,一次在最后)时,它确实发生了变化。
| 归档时间: |
|
| 查看次数: |
9896 次 |
| 最近记录: |