如何使用 python 的 matplotlib 重绘图像?
Posted
技术标签:
【中文标题】如何使用 python 的 matplotlib 重绘图像?【英文标题】:how do I redraw an image using python's matplotlib? 【发布时间】:2014-01-23 01:56:15 【问题描述】:我正在尝试做的事情似乎相当简单,但我正在努力让它发挥作用。我只是尝试使用 imshow 绘制图像,然后在新数据到达时定期重新绘制它。
我已经开始这样做了:
fig = figure()
ax = plt.axes(xlim=(0,200),ylim=(0,200))
myimg = ax.imshow(zeros((200,200),float))
然后我假设我可以这样调用 set_data 来更新图像:
myimg.set_data(newdata)
我尝试了很多其他的方法,例如我已经调用了ax.imshow(newdata)
,或者我尝试在set_data()
之后使用figure.show()
。
【问题讨论】:
【参考方案1】:您可以在每次向图形添加新内容时调用 figure.canvas.draw() 。这将刷新情节。
from matplotlib import pyplot as plt
from builtins import input
fig = plt.figure()
ax = fig.gca()
fig.show()
block = False
for i in range(10):
ax.plot(i, i, 'ko')
fig.canvas.draw()
if block:
input('pause : press any key ...')
else:
plt.pause(0.1)
plt.close(fig)
【讨论】:
这让我更近了一步。当我在上面运行您的代码时,它会在执行开始时打开一个图形,并仅在执行结束时绘制最终图(而不是每次点击返回时都会出现一个点)。如果有任何后果,我正在 Windows 7 上的 Spider 中运行 python 2.7。 我不知道。我已经在 linux 和 windows7 上测试过它并且它可以工作。这可能来自您的 matplotlib 版本。我相信语法可能会在不同版本之间发生变化。我正在使用 matplotlib 1.2.0 我发现如果你在那里执行 plt.pause() ,它会让图形有机会在继续执行之前重绘。其他插入等待的方法不会这样做。以上是关于如何使用 python 的 matplotlib 重绘图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python/matplotlib 为 3d 绘图设置“相机位置”?
请教如何自定义python的matplotlib中的X轴刻度的问题