在编写使用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()
答案 0 :(得分:35)
根据documentation,您可以将block
参数传递给plt.show()
。当然,如果你的matplotlib版本不够新,那就不会有了。
如果您有此功能,则应该可以将plt.show()
替换为plt.show(block=True)
以获得所需的行为。
答案 1 :(得分:9)
旧问题,但更多的规范答案(也许),因为它只使用记录而非实验性功能。
在脚本退出之前,进入非交互模式并显示您的数字。这可以使用plt.show()
或plt.gcf().show()
来完成。两者都将阻止:
plt.ioff()
plt.show()
OR
plt.ioff()
plt.gcf().show()
在这两种情况下,show
函数在图形关闭之前不会返回。第一种情况是阻止所有数字,第二种情况是仅阻止直到一个数字关闭。
您甚至可以使用matplotlib.rc_context
上下文管理器临时修改程序中间的交互状态,而无需更改任何其他内容:
import matplotlib as mpl
with mpl.rc_context(rc={'interactive': False}):
plt.show()
OR
with mpl.rc_context(rc={'interactive': False}):
plt.gcf().show()