【问题标题】:how do I redraw an image using python's matplotlib?如何使用 python 的 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()

【问题讨论】:

    标签: python matplotlib imshow


    【解决方案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() ,它会让图形有机会在继续执行之前重绘。其他插入等待的方法不会这样做。
    猜你喜欢
    • 2015-09-19
    • 2019-05-03
    • 2012-04-10
    • 2021-01-31
    • 2011-07-06
    • 2010-11-27
    • 2018-01-20
    • 2018-03-13
    相关资源
    最近更新 更多