2011-07-13 32 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()'互動。我會解決答案 –