【发布时间】:2010-04-08 23:25:43
【问题描述】:
有很多关于 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()**
我在plotting lines without blocking execution 找到了与我正在尝试做的最接近的答案,但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
任何帮助,即使只是“查找 this_method”也会非常好,所以我至少可以缩小我的努力来弄清楚如何使用该方法。如果有更多有用的信息,请告诉我。
【问题讨论】:
-
我在 Windows 上使用 QT4Agg 后端遇到了同样的问题,我相信它与这个 github issue 有关,使用 pyplot.pause() 修复了它。
标签: python matplotlib