Python 在不阻塞执行的情况下绘制线

Python 在不阻塞执行的情况下绘制线,python,matplotlib,Python,Matplotlib,我正在使用matplotlib绘制图表 当我使用命令show()my code blocks在该命令下绘制图表时 我想用新数据刷新我的值列表,然后在背景上刷新图像。如何做到这一点,而不关闭每次与图形窗口? 下面是我正在使用的代码 import pylab a = (1,2,3,4) pylab.plot(a) pylab.show() # blocks here 这通过使用-wthread(或-pylab)选项调用Ipython来实现。它将不再在show上阻塞。如果您不使用IPython外壳,

我正在使用matplotlib绘制图表

当我使用命令
show()
my code blocks在该命令下绘制图表时

我想用新数据刷新我的值列表,然后在背景上刷新图像。如何做到这一点,而不关闭每次与图形窗口? 下面是我正在使用的代码

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

这通过使用
-wthread
(或
-pylab
)选项调用Ipython来实现。它将不再在
show
上阻塞。

如果您不使用IPython外壳,而是运行一个程序,则可能需要执行以下操作:

pyplot.draw()
绘图()之后,可能后跟

raw_input("Press enter when done...")
以便在绘制其他内容之前等待用户

如果在程序开始时执行
pyplot.ion()
,则通常甚至可以跳过执行
draw()


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

在IPython中,它不应阻止

否则: 使用
ion()
可以打开交互模式<代码>显示()
不会阻塞系统 不再每个
draw()
绘图(x,y)
都会更新绘图

ioff()
关闭交互模式。如果您添加了大量数据但没有 想要更新每一个小细节


另请参见:

在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.
bash:~/Projects/plyground$python-mipython笔记本电脑-pylab
警告:`-pylab`标志已被弃用。
使用`--matplotlib`并手动导入pylab。
[E 21:09:05.446 NotebookApp]命令行上指定--pylab的支持已被删除。
[E 21:09:05.447 NotebookApp]请在笔记本中使用“%pylab”或“%matplotlib”。

如果不调用pylab.show(),会发生什么?如果其中一个答案解决了您的问题,您可能希望将其标记为“已接受”(绿色复选标记)。或者,如果你发现了其他问题,可以添加你自己的答案。或者甚至可能发表评论,让所有人都知道答案都不起作用。:)如果使用现代IPython(Jupyter),cli
-pylab
标志可能会重复,但不推荐使用per notebook
%pylab
命令。