2011-07-13 31 views
3

找遍了许多网站,使用情节,次要情节,有些基本的动画,和其他迂回方式,但这一数字将不会关闭,尽管使用的close(),CLF()等如何在Python/pylab中关闭图形或替换图形而不必手动关闭每个图形?

我有这样的事情:

import numpy 
    from pylab import * 
    import time 
    fig = Figure() 
    counter1 = 0 
    counter2 = 0 

    while counter1<5: 
      counter1 = counter1+1 
      while counter2<10: 
        scatter(x_list[counter2], y_list[counter2], hold = 'on') ### x_list and y_list are just lists of random numbers 
        counter2 = counter2 + 1 
      show() 
      sleep(0.5) 
      close() 

我正在寻找任何解决方案,如上所述。情节,subplots,动画...

回答

3

两方面的问题开始:首先,你确定这是你实际运行的代码?睡眠不是我的pylab版本中的函数,所以你的导入时间似乎不符合你的调用,它应该是time.sleep(0.5)。其次,我根本不理解你的循环。看起来你正在绘制相同的东西5次,因为counter1没有任何效果,并且在暂停之前将每个点添加到散点图。你是否试图逐点绘制x_list/y_list?

如果你使用draw()而不是show()我认为它应该工作; show()是什么保持关闭()。以下是你想要的东西吗?

import time 
from pylab import * 
ion() 

# test data 
x = arange(0, 10, 0.5) 
y = 10*x+exp(x)*abs(cos(x)) 

for j in range(len(x)): 
    if j > 0: scatter(x[:j], y[:j]) 
    # assuming we don't want the limits to change 
    xlim(0, 10) 
    ylim(0, 1000) 
    draw() 
    time.sleep(2) 
    #close() 

请注意,我已经注释掉了close(),因为这样它会产生一个很好的动画。如果你放下它,它会继续关闭并重新打开窗户,这可能是你想要的,但对我的眼睛看起来并不是很有用。 YMMV,当然。

+0

我做错了什么,我只是试图运行你的例子,逐字。什么都没发生。使用python 2.6.6 –

+1

发现它,你需要调用'pylab.ion()'互动。我会解决答案 –