2010-07-11 259 views
3

我有一個類,我用它來繪製東西,然後將它們保存到一個文件。下面是它的一個簡化版本:Matplotlib:使用相同的圖繪製多個圖,沒有重疊

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 

class Test(): 
    def __init__(self, x, y, filename): 

     fig = plt.figure(1) 
     ax = fig.add_subplot(111) 

     ax.plot(x, y, 'D', color='red') 

     ax.set_xbound(-5,5) 
     ax.set_ybound(-5,5) 

     plt.savefig('%s.png' % filename) 


test1 = Test(1,2, 'test1') 
test2 = Test(2,4, 'test2') 

下面是結果:

test1的

test2的

的問題是,test2的圖像還具有從測試1點。圖形是在一個循環中動態生成的,所以我不能硬編碼圖形編號。

我可以做一個計數器,並將其傳遞給類的構造函數,但我想知道是否有更優雅的方法來做到這一點。我嘗試刪除test1對象,但沒有做任何事情。

回答

9

您可以使用圖的clf方法在完成一個圖形後清除圖形。另外,pyplot.clf將清除當前的數字。

或者,如果你只是想要一個新的數字,然後調用pyplot.figure沒有明確的num參數 - 它會自動增加,所以你不需要保留一個計數器。

+1

+1,我建議只留下'num'參數。 – 2010-07-12 00:12:55

+0

這很好。謝謝。我只需要一個新的數字,所以我忽略了'num'參數。直到現在我才知道我可以這樣做。 – yoshi 2010-07-12 00:24:47