首页 文章

在Matplotlib中保持绘图窗口打开

提问于
浏览
33

在编写使用matplotlib的脚本时,我在运行脚本时暂时获得一个交互式图形窗口,在我可以查看绘图之前立即消失 . 如果我在iPython中以交互方式执行相同的代码,则图形窗口保持打开状态 . 当我运行脚本时,如何让matplotlib在生成图形时保持打开?

例如,我可以保存此图,但我无法使用 show() 显示它:

from matplotlib import pyplot as plt
import scipy as sp

x =  sp.arange(10)
y =  sp.arange(10)

plt.plot(x,y)
plt.show()

2 回答

  • 9

    根据documentation,有一个实验 block 参数可以传递给 plt.show() . 当然,如果您的matplotlib版本没有't new enough, it won' t .

    如果您具有此功能,则应该能够将 plt.show() 替换为 plt.show(block=True) 以获得所需的行为 .

  • 28

    旧的问题,但更多的规范答案(也许),因为它只使用记录而非实验性的功能 .

    在脚本退出之前,进入非交互模式并显示您的数字 . 这可以使用 plt.show()plt.gcf().show() 来完成 . 两者都会阻止:

    plt.ioff()
    plt.show()
    

    要么

    plt.ioff()
    plt.gcf().show()
    

    在这两种情况下, show 函数在图形关闭之前不会返回 . 第一种情况是阻止所有数字,第二种情况是仅阻止直到一个数字关闭 .

    您甚至可以使用matplotlib.rc_context上下文管理器临时修改程序中间的交互状态,而无需更改任何其他内容:

    import matplotlib as mpl
    with mpl.rc_context(rc={'interactive': False}):
        plt.show()
    

    要么

    with mpl.rc_context(rc={'interactive': False}):
        plt.gcf().show()
    

相关问题