Ivo*_*pse 7 python wxpython matplotlib
我正在尝试使用Matplotlib和wxPython显示一些数据.我有一个图添加到FigureCanvasWxAgg中.然后将画布添加到BoxSizer并设置为wx.EXPAND | wx.ALL,BoxSizer轮流由SetSizerAndFit设置.
self.figure = Figure(None, dpi = 75)
self.displaycanvas = FigureCanvas(self, -1, self.figure)
self.axes = self.figure.add_subplot(111)
self.axes.imshow(self.data, interpolation="quadric")
self.mainSizer = wx.BoxSizer()
self.mainSizer.Add(self.displaycanvas, 1, wx.EXPAND|wx.ALL, 5)
self.SetSizerAndFit(self.mainSizer)
Run Code Online (Sandbox Code Playgroud)
然后将此面板添加到另一个面板,其中相对于正在添加的其他面板确定其大小.虽然我对面板的外部尺寸感到满意,但我无法让图形适合面板:

所有爪子的大面板应缩放以适应面板,同时保持其纵横比.
所以我想知道,为什么这个数字不会扩展到适合面板?
add_subplot您可以创建具有明确边界的轴对象,而不是从方法中获取轴.而不是
self.axes = self.figure.add_subplot(111)
Run Code Online (Sandbox Code Playgroud)
使用
self.axes = self.figure.add_axes([0,0,1,1])
Run Code Online (Sandbox Code Playgroud)
四个数字是轴的左边缘,下边缘,宽度和高度,以图形宽度和高度的分数表示. [0,0,1,1]将扩展图像以适应整个图形.当然,宽高比仍然存在问题.如果要保持图像的纵横比,则不会始终填充整个窗口小部件空间(取决于窗口小部件的形状).如果宽高比更改正常,您可以像这样调用im_show
self.axes.imshow(self.data, interpolation="quadric", aspect='auto')
Run Code Online (Sandbox Code Playgroud)
这将使图像填充小部件,无论形状如何.
如果没有自动宽高比,则会导致:
