绘制线条而不阻塞执行
我正在使用 matplotlib 来绘制图表和图形。
当我使用命令 show()
绘制图表时,我的代码会阻塞在该命令处。
我想用新数据刷新我的值列表,然后刷新背景图像。如何在不每次关闭带有图表的窗口的情况下做到这一点? 下面是我正在使用的代码
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
I am using matplotlib to draw charts and graphs.
When I plot the chart using the command show()
my code blocks at this command.
I would like to refresh my list of values with new data , and than refresh the image on the background. How to do that without closing each time the window with the graph?
Below is the code I am using
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在以
-pylab
开头的 IPython 中,它不应该阻塞。否则:
使用
ion()
您可以打开交互模式。show()
不会阻塞您的系统不再了。每个
draw()
或plot(x, y)
都会更新您的绘图。ioff()
关闭交互模式。如果您添加了大量数据但没有添加,则很有用想要更新每一个小细节。
另请参阅:http://www.scipy.org/Cookbook/Matplotlib/Animations
In IPython started with
-pylab
it should not block.Otherwise:
With
ion()
you turn the interactive mode on.show()
does not block your systemanymore. Every
draw()
orplot(x, y)
updated your plot.ioff()
turns interactive mode off. Useful if you add lots of data and don'twant to update every little detail.
See also: http://www.scipy.org/Cookbook/Matplotlib/Animations
如果您不使用 IPython shell 而是运行程序,您可能想要执行以下操作:
在
plot()
之后,可能后面跟着,以便在绘制其他内容之前等待用户。
如果您在程序开始时执行
pyplot.ion()
,则通常甚至可以跳过draw()
。pyplot.show() 实际上是一个无限循环,用于处理主绘图窗口中的事件(例如缩放、平移等)。
If you are not using the IPython shell but instead running a program, you probably want to do:
after a
plot()
, possibly followed byso as to wait for the user before plotting something else.
If you do
pyplot.ion()
at the beginning of your program, doingdraw()
can often even be skipped.pyplot.show()
is actually an infinite loop that handles events in the main plotting window (such as zooming, panning, etc.).在 MacOS X 上,我遇到了解锁仅产生白屏的问题。最后,@tyleha 的建议在笔记本中直接使用 %pylab 有所帮助。
事实上,建议在使用已弃用的 -pylab 标志时:
On MacOS X i had the problem that unblocking only produced a white screen. In the end @tyleha's suggestion using %pylab directly in the note book helped.
In fact it's suggested when using the deprecated the -pylab flag:
这是通过使用
-wthread
(或-pylab
)选项调用 Ipython 来实现的。它不会再阻塞show
了。This works by invoking Ipython with the
-wthread
(or the-pylab
) option. It will not block onshow
anymore.