【问题标题】:Embedding a matplotlib figure inside a WxPython panel在 WxPython 面板中嵌入 matplotlib 图
【发布时间】:2012-05-31 00:50:49
【问题描述】:

如何在 WxPython 面板中嵌入 ma​​tplotlib 图形对象

我四处搜索,看到了涉及交互式图形和其他额外内容的复杂示例。谁能帮忙举个小例子?

【问题讨论】:

    标签: python wxpython matplotlib


    【解决方案1】:

    这是一个带有 matplotlib 画布的 Panel 的最小示例:

    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()
    

    【讨论】:

    • 嘿,你能不能也写一个选项来设置画布的大小?
    【解决方案2】:

    定义帧大小:

    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))
    ...
    

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多