绘制线条而不阻塞执行
我正在使用matplotlib来绘制图表和图形。
当我用命令 show()
来显示图表时,我的代码在这个命令处停住了。
我想用新数据更新我的数值列表,然后在后台刷新图像。怎么才能做到这一点,而不需要每次都关闭图表窗口呢?下面是我正在使用的代码。
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
4 个回答
0
在MacOS X上,我遇到了一个问题,就是解锁后只出现了一个白屏。最后,@tyleha的建议是直接在笔记本中使用%pylab,这个方法帮了我。实际上,当你使用已经不推荐使用的-pylab标志时,系统会建议这样做:
bash:~/Projects/plyground $ python -m IPython notebook -pylab
WARNING: `-pylab` flag has been deprecated.
Use `--matplotlib <backend>` and import pylab manually.
[E 21:09:05.446 NotebookApp] Support for specifying --pylab on the command line has been removed.
[E 21:09:05.447 NotebookApp] Please use `%pylab` or `%matplotlib` in the notebook itself.
3
如果你不是在使用IPython这个环境,而是在运行一个程序,那么你可能想要这样做:
pyplot.draw()
在调用plot()
之后,可能还会接着调用
raw_input("Press enter when done...")
这样可以在绘制其他内容之前,先等待用户的操作。
如果你在程序开始时使用pyplot.ion()
,那么通常可以省略draw()
这一步。
pyplot.show()
其实是一个无限循环,它会处理主绘图窗口中的各种事件,比如缩放、平移等等。
12
在IPython中,如果你用 -pylab
启动,它应该不会阻塞你的操作。
否则的话:使用 ion()
可以开启交互模式。这样一来, show()
就不会再阻塞你的系统了。每次调用 draw()
或 plot(x, y)
都会更新你的图表。
而 ioff()
则是关闭交互模式。如果你要添加很多数据,而不想每次都更新每一个小细节,这个功能就很有用。
更多信息请查看: http://www.scipy.org/Cookbook/Matplotlib/Animations