在Matplotlib中保持绘图窗口打开

wvt8vs2t  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(110)

在编写使用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()

字符串

x7yiwoj4

x7yiwoj41#

根据文档,有一个实验性的block参数可以传递给plt.show()。当然,如果你的matplotlib版本不够新,它就不会有这个。
如果你有这个特性,你应该能够用plt.show(block=True)替换plt.show()来获得你想要的行为。

ih99xse1

ih99xse12#

老问题,但更规范的答案(也许),因为它只使用记录而不是实验性的功能。
在脚本退出之前,进入非交互模式并显示图形。这可以使用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()

r8xiu3jd

r8xiu3jd3#

对于任何人这适用于,我有问题,我的新窗口被自动关闭,无论交互式后端。我的错误是意外地在终端启动的Python版本中运行脚本,而不是调用我的系统版本。为了解决这个问题,我只需要quit()我的终端Python会话并重新运行程序--简单但令人沮丧的调试!

相关问题