我使用matplotlib绘制图表和图表。
当我使用命令show()
绘制图表时,我的代码会阻止此命令。
我想用新数据刷新我的值列表,然后刷新背景图像。如何在没有每次关闭窗口的情况下关闭图表? 以下是我正在使用的代码
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
答案 0 :(得分:12)
在IPython中以-pylab
开头,它不应该阻止。
否则:
使用ion()
,您可以启用交互模式。 show()
不会阻止您的系统
了。每个draw()
或plot(x, y)
都会更新您的情节。
ioff()
关闭互动模式。如果添加大量数据,则无用
想要更新每一个细节。
答案 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
。