wxPython 面板中的 Matplotlib 导航工具栏

Matplotlib Navigation Toolbar in wxPython Panel

我正在开发一个 GUI(使用 wxPython 开发),您可以在其中绘制不同面板上的图形。目前我有这个:

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from matplotlib import pyplot as plt
import numpy as np
import wx

class Frame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,'Plot',size=(1000,800))

        # Main Panel (It will contain other elements besides the plotting panel)
        self.mainPanel = wx.Panel(self,-1,size=(1000,800))
        self.mainPanel.SetBackgroundColour('gray')

        # Plotting panel
        self.plottingPanel = wx.Panel(self,-1,pos=(50,20),size=(500,400))
        self.plottingPanel.SetBackgroundColour('white')

        # Plot example
        figure = plt.figure()
        axes = figure.add_subplot(111)
        t = np.arange(0.0, 3.0, 0.01); s = np.cos(2 * np.pi * t);axes.plot(t,s)
        plt.title('Cosine')
        plt.xlabel('x');plt.ylabel('y')

        # Canvas
        canvas = FigureCanvas(self.plottingPanel,-1,figure)
        # Navegation toolbar
        navToolbar = NavigationToolbar2Wx(canvas)
        navToolbar.DeleteToolByPos(6);navToolbar.DeleteToolByPos(2);navToolbar.DeleteToolByPos(1)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(canvas)
        sizer.Add(navToolbar)

class App(wx.App):
    def OnInit(self):
        self.Frame = Frame()
        self.Frame.Show()
        self.SetTopWindow(self.Frame)
        return True

def main():
    app = App()
    app.MainLoop()

if __name__ == '__main__':
    main() 

当我 运行 脚本得到这个:

我已将绘图面板涂成白色以突出显示它。绘图大小如何适应面板大小?

我想要这样的东西(这是蒙太奇):

另一方面,我设法从栏中删除了一些我需要的不必要的按钮,但栏不起作用,也就是说,按下按钮时没有任何反应:(

感谢您的帮助

可以在创建绘图元素 (matplotlib.figure.Figure) 的容器时设置参数。
例如figsize 以英寸为单位设置图形尺寸,tight_layout 调整布局紧凑的子图。

figure = plt.figure(figsize = (4, 3), tight_layout=True)

或者您可以设置 matplotlib.axes.Axes object by .set_position:

的位置
figure = plt.figure()
axes = figure.add_subplot(111)
axes.set_position(pos = [0.15,0.3,0.55,0.55], which='both')