16 python matplotlib
关于matplotlib,pylab,pyplot,ipython有很多问题,所以如果你厌倦了看到这个问题,我很抱歉.我会尝试尽可能具体,因为我一直在查看人们的问题,并查看pyplot和pylab的文档,我仍然不确定我做错了什么.使用代码:
目标:每隔0.5秒绘制一个数字,并在调用plot命令后立即更新数字.
我的编码尝试如下(在ipython -pylab上运行):
import time
ion()
x=linspace(-1,1,51)
plot(sin(x))
for i in range(10):
plot([sin(i+j) for j in x])
#see **
print i
time.sleep(1)
print 'Done'
它正确绘制每一行,但直到它退出for循环.我试图通过放置draw()在哪里**来强制重绘,但这似乎也不起作用.理想情况下,我想简单地添加每一行,而不是完全重绘.如果需要重绘,那很好.
解决的其他尝试:
在之后ion(),尝试添加hold(True)无济于事.
对于试图踢show()的**
最接近的答案我发现我想要做的是在不阻塞执行绘制线条,但show()没有做任何事情.
如果这是一个简单的请求,我道歉,我正在寻找一些如此明显的东西.值得一提的是,当我尝试将matlab代码从类转换为某些python供我自己使用时,这就出现了.我尝试转换的原始matlab(已删除初始化)如下:
for i=1:time
plot(u)
hold on
pause(.01)
for j=2:n-1
v(j)=u(j)-2*u(j-1)
end
v(1)= pi
u=v
end
Run Code Online (Sandbox Code Playgroud)
任何帮助,即使它只是"查找this_method"也会非常好,所以我至少可以缩小我的努力来弄清楚如何使用这种方法.如果有更多有用的信息,请告诉我.
小智 10
from pylab import *
import time
ion()
tstart = time.time() # for profiling
x = arange(0,2*pi,0.01) # x-array
line, = plot(x,sin(x))
for i in arange(1,200):
line.set_ydata(sin(x+i/10.0)) # update the data
draw() # redraw the canvas
pause(0.01)
print 'FPS:' , 200/(time.time()-tstart)
ioff()
show()
Run Code Online (Sandbox Code Playgroud)
#
以上对我很有帮助.我在win7操作系统下的pythonxy2.7.3中的spyder编辑器中运行它.注意draw()后跟ioff()和show()后面的pause()语句.
您链接的问题的第二个答案提供了答案:draw()每次调用后plot()立即显示; 例如:
import time
ion()
x = linspace(-1,1,51)
plot(sin(x))
for i in range(10):
plot([sin(i+j) for j in x])
# make it appear immediately
draw()
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
如果这不起作用...尝试他们在这个页面上做什么:http://www.scipy.org/Cookbook/Matplotlib/Animations
import time
ion()
tstart = time.time() # for profiling
x = arange(0,2*pi,0.01) # x-array
line, = plot(x,sin(x))
for i in arange(1,200):
line.set_ydata(sin(x+i/10.0)) # update the data
draw() # redraw the canvas
print 'FPS:' , 200/(time.time()-tstart)
Run Code Online (Sandbox Code Playgroud)
该页面提到该line.set_ydata()功能是关键部分.
与我的mac上运行的ipython有完全相同的问题.(在Macbook pro上运行雪豹的蟒蛇2.7 32位的Enthought分布).
得到朋友的工作提示.使用以下参数从终端运行ipython:
"ipython -wthread -pylab"
这适合我.来自"Daniel G"的上述python代码没有发生任何事故,而之前它没有更新情节.
根据ipython文档:"[ - gthread,-qthread,-q4thread,-wthread,-pylab:...]它们为GTK,Qt(版本3和4)和WXPython工具包以及matplotlib提供了线程支持图书馆." 我不知道为什么这很重要,但它确实有效.
希望这是有益的,labjunky
| 归档时间: |
|
| 查看次数: |
30993 次 |
| 最近记录: |