在快速查看问题后,这是一个更明智的答案。
首先,让我们假设
from matplotlib import pylab
pylab.plot(range(10), range(10))
pylab.show()
不“坚持”情节,即在节目结束之前几乎没有显示。如果发生这种情况,则该调用pylab.show()
假定您在交互模式下运行,因此在调用此函数后还有一些其他进程将继续执行。由于情况并非如此,因此 Python 退出,绘图也将显示。现在,解决这个问题的第一种方法是强制pylab.show
阻塞:
pylab.show(block=True)
不过,我们不知道为什么pylab.show
假设您在交互模式下运行。为了确认它的假设,实验运行以下代码
import matplotlib
print matplotlib.is_interactive()
如果这打印为 True,那么这意味着您的默认配置设置为interactive: True
. 要检查是哪个配置,请print matplotlib.matplotlib_fname()
找出它的路径。打开它并检查interactive
参数的值。
现在,如果您不想修改配置,我会建议一个不同的解决方案:
import matplotlib
from matplotlib import pylab
if matplotlib.is_interactive():
pylab.ioff()
pylab.plot(range(10), range(10))
pylab.show()
所以没有任何情况认为它必须在调用方法matplotlib
之前渲染东西。show
最后,这些解决方案中最可怕的是使用pylab.pause
或等价物:
from matplotlib import pylab
pylab.ion() # Force interactive
pylab.plot(range(10), range(10))
pylab.show() # This does not block
pylab.pause(2**31-1)