2012-05-24 20 views
22

के अंदर एक matplotlib आकृति को एम्बेड करना मैं WxPython पैनल के अंदर matplotlib आकृति ऑब्जेक्ट कैसे एम्बेड करूं?WxPython पैनल

मैंने चारों ओर गुगल किया और जटिल उदाहरणों को इंटरैक्टिव ग्राफिक्स और अन्य अतिरिक्त सामानों से जोड़ा। क्या कोई न्यूनतम उदाहरण के साथ मदद कर सकता है?

उत्तर

31

यह एक matplotlib कैनवास के साथ एक पैनल के लिए एक न्यूनतम उदाहरण है:

from numpy import arange, sin, pi 
import matplotlib 
matplotlib.use('WXAgg') 

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
from matplotlib.backends.backend_wx import NavigationToolbar2Wx 
from matplotlib.figure import Figure 

import wx 

class CanvasPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.figure = Figure() 
     self.axes = self.figure.add_subplot(111) 
     self.canvas = FigureCanvas(self, -1, self.figure) 
     self.sizer = wx.BoxSizer(wx.VERTICAL) 
     self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) 
     self.SetSizer(self.sizer) 
     self.Fit() 

    def draw(self): 
     t = arange(0.0, 3.0, 0.01) 
     s = sin(2 * pi * t) 
     self.axes.plot(t, s) 


if __name__ == "__main__": 
    app = wx.PySimpleApp() 
    fr = wx.Frame(None, title='test') 
    panel = CanvasPanel(fr) 
    panel.draw() 
    fr.Show() 
    app.MainLoop() 

enter image description here

+3

अरे, क्या आप लिख सकते हैं कैनवास के आकार को सेट करने के लिए एन विकल्प भी? – aitchnyu

1

फ्रेम आकार निर्धारित करना:

if __name__ == "__main__": 
    app = wx.App() 
    fr = wx.Frame(None, title='test', size=wx.Size(806, 450)) 
    panel = CanvasPanel(fr) 
    panel.draw() 
    fr.Show() 
    app.MainLoop() 

या पैनल आकार को परिभाषित:

class CanvasPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent,size=wx.Size(806, 450)) 
...