如何使用 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 绘图设置“相机位置”?

如何更改 matplotlib(python)中的字体?

请教如何自定义python的matplotlib中的X轴刻度的问题

如何使用 matplotlib 在 Python 中创建图例

如何在 matplotlib / Python 中更改后端

如何使用 python 的 matplotlib 重绘图像?