【问题标题】:python and update figure in matplotlibpython和matplotlib中的更新图
【发布时间】:2012-07-30 15:31:42
【问题描述】:

我已经对 SO 进行了搜索,但还没有找到正确的“解决方案”来解决我的问题。我正在对一些我希望绘制的数据运行循环。在循环的每一步——我用 plt.show() 绘制图形。但是,由于这是一个阻塞功能,我被卡住了,直到我手动关闭窗口,然后循环继续,下一个图出现。

我想做的是能够绑定一个按键事件来关闭图形并继续循环(而不是使用鼠标将“X”移出图形)。

如果这不可能,我想设置一个计时器来关闭图形并继续循环。

我所有的问题似乎都与 plt.show() 阻止其他所有事情有关——有什么办法解决这个问题吗?

关于我的绘图的一些注释:它们使用相同的轴,但包含散点图、填充框和注释——它们总是在变化。

谢谢!

【问题讨论】:

    标签: python plot matplotlib figure


    【解决方案1】:

    尝试使用来自matplotlib.pyplotion

    import matplotlib.pyplot as pp
    pp.ion()
    fig = pp.figure()
    

    有关ion 和交互式与非交互式用法here 的更多信息

    或者,如果您想使用按钮按下方法分配回调

    def moveon(event):
        pp.close()
    
    cid = fig.canvas.mpl_connect('key_press_event', moveon)
    pp.show()
    

    事件计时器更棘手,因为show 命令是阻塞的,所以它可能必须涉及线程。

    【讨论】:

    • 这是一个很好的答案。此外,您可以将其放入带有 PyQT 之类的 GUI 中,这样您就可以进行更多控制并能够根据需要进行更新。
    • 这对我不起作用。我使用了与提供的完全相同的代码,并且发生了奇怪的事情。发生的事情是所有数字都连续打开(我没有按和按钮)并且它们里面没有任何东西。此外,“不响应”出现并关闭了我的 python。 pp.ion() 似乎导致了这些问题。帮忙??
    • @mcfly:ion() 选项意味着执行不会暂停 - 如果您想每次都替换现有绘图,只需调用一次 figure
    • @mcfly:或者,如果您希望暂停执行,请使用添加回调方法(不带ion()!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多