2010-01-12 179 views
3

我以前用過python和matplotlib來比較兩個函數的輸出。結果非常簡單,因爲使用matplotlib繪圖非常簡單:我只繪製了兩個具有不同標記的數組。小菜一碟。動態更改matplotlib圖的內容

現在我發現自己有同樣的問題,但現在我有很多的曲線對比較。我最初嘗試用不同的顏色和標記來繪製一切。這並不能滿足我,因爲每條曲線的範圍並不完全相同。除此之外,我很快用完了顏色和標記,這些顏色和標記足夠不同以識別(RGBCMYK,之後,自定義顏色類似於之前的任何顏色)。

我也嘗試繪製每對曲線的子圖,得到一個有許多曲線的窗口。太擁擠。 我試過每個小區一個窗口,窗口太多。

所以我只是還是想知道是否有任何現有的小部件,如果您有任何建議(或不同的想法)來實現:

我希望看到一對曲線,然後選擇輕鬆下單,帶有滑動條,按鈕,鼠標滾動或任何其他小部件或事件。通過改變曲線,前一個應該消失,傳說應該改變,它的軸也會改變。

+0

我目前正在致力於連接一個事件處理程序,該事件處理程序會更改繪圖的數據並重新繪製它。 – YuppieNetworking 2010-01-12 17:30:32

回答

8

嗯,我設法做到這一點與鼠標點擊事件處理程序。我會改變它更有用的東西,但我仍然發佈我的解決方案。

import matplotlib.pyplot as plt 

figure = plt.figure() 
# plotting 
plt.plot([1,2,3],[10,20,30],'bo-') 
plt.grid() 
plt.legend() 

def on_press(event): 
    print 'you pressed', event.button, event.xdata, event.ydata 
    event.canvas.figure.clear() 
    # select new curves to plot, in this example [1,2,3] [0,0,0] 
    event.canvas.figure.gca().plot([1,2,3],[0,0,0], 'ro-') 
    event.canvas.figure.gca().grid() 
    event.canvas.figure.gca().legend() 
    event.canvas.draw() 


figure.canvas.mpl_connect('button_press_event', on_press)