matplotlib嵌入到wxpython


2009-07-13 javaeye http://angeloce.iteye.com/admin/blogs/425180

===========================    

 

matplotlib(mpl)本身支持wxpython作為backends。但是直接使用import pylab時調用的wx窗體不能自定義和改制。跟蹤下pylab模塊的show方法,最終找到窗體類為backend_wx(agg)下的FigureFrameWx(FigureFrameWxAgg).我想把這個類單獨拽出來,但關聯太多,實在力不從心,后來發現類FigureCanvasWx(FigureCanvasWxAgg),繼承了wx.Panel類,圖表顯示應該跟此有關。(搞不太懂后綴agg的含義……)

 

FigureCanvasWx 需要三個參數:parent, id ,figure. 前兩個與wx.Panel相同,后一個是Figure實例(參照matploglab.figure模塊),鼓搗一陣,寫出一個簡單可顯示窗體。

 

import wx   
from matplotlib.backends import backend_wxagg   
from matplotlib.figure import Figure   
  
class TestFrame(wx.Frame):   
    def __init__(self):   
        wx.Frame.__init__(self, None)   
           
        self.panel = backend_wxagg.FigureCanvasWxAgg(self, -1, Figure())   
        axes = self.panel.figure.gca()   
        axes.cla()   
        axes.plot([1,2,3],[1,2,3])   
           
        self.panel.draw()
           
  
  
app = wx.App()   
f= TestFrame()   
f.Show(True)   
app.MainLoop()

  

 
        

 

這個代碼只實現了一張極簡單的x=y直線圖,如果需要添加相應事件和顯示,請參照backend_wx內的代碼。

 

當然已經有人替我們做好一些, wxmpl http://agni.phys.iit.edu/~kmcivor/wxmpl/

參看源碼,其實mpl嵌入wxpython不是難事。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM