绘制线条而不阻止执行

时间:2010-02-22 12:40:57

标签: python matplotlib

我使用matplotlib绘制图表和图表。

当我使用命令show()绘制图表时,我的代码会阻止此命令。

我想用新数据刷新我的值列表,然后刷新背景图像。如何在没有每次关闭窗口的情况下关闭图表? 以下是我正在使用的代码

import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here

4 个答案:

答案 0 :(得分:12)

在IPython中以-pylab开头,它不应该阻止。

否则: 使用ion(),您可以启用交互模式。 show()不会阻止您的系统 了。每个draw()plot(x, y)都会更新您的情节。

ioff()关闭互动模式。如果添加大量数据,则无用 想要更新每一个细节。

另请参阅:http://www.scipy.org/Cookbook/Matplotlib/Animations

答案 1 :(得分:3)

如果你没有使用IPython shell而是运行程序,你可能想要这样做:

pyplot.draw()
plot()之后

,可能后跟

raw_input("Press enter when done...")

以便在绘制其他内容之前等待用户。

如果您在计划开始时pyplot.ion(),则通常可以跳过draw()

pyplot.show()实际上是一个无限循环,用于处理主绘图窗口中的事件(例如缩放,平移等)。

答案 2 :(得分: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 :(得分:-1)

这可以通过使用-wthread(或-pylab)选项调用Ipython来实现。它不会再阻止show