2011-06-13 27 views
1

我有一個python函數生成一個隨機值的列表。python matplotlib - 再生圖嗎?

我調用此函數後,我調用另一個函數,使用matplotlib繪製隨機值。

我希望能夠點擊鍵盤/鼠標的一些關鍵,並具有以下發生:

將重新產生

(1)隨機值的一個新的列表

(2)將繪製從(1)的值(替換當前的matplotlib圖表)

含義,我希望能夠通過單擊按鈕查看新圖表。如何在python中執行此操作?

回答

3

確實是quite easy to do with matplotlib。其基本思想是利用

plt.connect('button_press_event', onclick) 

onclick每當用戶按下一個按鈕:

import matplotlib.pyplot as plt 
import numpy as np 

class Main(object): 
    def clear(self): 
     plt.clf() 
    def redraw(self): 
     self.clear() 
     plt.plot(self.data) 
     plt.title('100') 
     plt.text(50,0.85,'100') 
     plt.draw() 
    def on_click(self,event): 
     self.data=np.random.random(100)  
     self.redraw()   
    def run(self): 
     plt.figure() 
     plt.connect('button_press_event', self.on_click) 
     plt.show() 

    def __init__(self): 
     self.data=np.random.random(100)  

if __name__=='__main__':   
    m=Main() 
    m.run() 
    print(m.data) 
+0

謝謝你。我會試一下!你還可以建議如何在圖表的頂部中間部分寫文字(比如數字100)? – user3262424 2011-06-13 17:49:38

+0

@ user3262424:是;您可以使用'plt.title'在圖形的頂部中間部分放置一個字符串(繪圖軸以外)。或者,您可以使用'plt.text'在繪圖軸的任何位置放置一個字符串。我修改了'redraw'方法來顯示兩者。 – unutbu 2011-06-13 19:34:14

+0

謝謝。你是最好的! – user3262424 2011-06-13 20:10:34

0

從matplotlib.widgets導入按鈕

real_points = plt.axes()散射(。 x = xpts,y = ypts,alpha = .4,s = size,c ='green',label ='實際數據')

#復位按鈕
RECT = [左邊,底部,寬度,高度]
reset_axis = plt.axes([0.4,0.15,0.1,0.04])
按鈕=按鈕(AX = reset_axis,標記= '復位',顏色=」 lightblue」,hovercolor = '0.975')

DEF復位(事件):
real_points.remove()

button.on_clicked(重置)

plt.show()