Matplotlib 的 pyplot 中“交互模式”的文档如下:
pyplot 接口的交互属性控制是否在每个 pyplot 命令上绘制图形画布。如果 interactive 为 False,则图形状态会在每个绘图命令上更新,但只会在显式调用 draw() 时绘制。当 interactive 为 True 时,每个 pyplot 命令都会触发一次绘制。
这似乎很清楚:当交互模式打开时,plot()
无需做就可以做draw()
。但是,在以下代码中执行 draw() 不会执行任何操作:
from matplotlib import pyplot as pp
# Interactive mode is off by default
pp.plot([10, 20, 50])
pp.draw()
raw_input('Press enter...') # No graph displayed?!!
(在 Windows XP 上,Matplotlib 1.0.1)。
在开头添加ion()
会使图形出现,同时等待用户输入 enter(方便关闭所有图形):
from matplotlib import pyplot as pp
ion()
pp.plot([10, 20, 50]) # No draw() is necessary
raw_input('Press enter...') # The graph is interactive *and* the terminal responds to enter
因此,它看起来ion()
不仅仅是在每个绘图命令之后添加自动图形更新,不幸的是我在文档中找不到任何东西。后一个程序的另一个更重要的问题是,ion()
使所有绘图命令都更新图形,当一个图形被多次更新时,这很耗时。
那么,有没有办法:
- 让终端等待进入,之后自动关闭所有数字,
- 具有交互式 Matplotlib 图,
- ... 不强制在开始时打开交互模式(以免强制自动更新图表,这可能很耗时)?