我正在尝试使用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)
然后将此面板添加到另一个面板,其中相对于正在添加的其他面板确定其大小。虽然我对面板的外部尺寸感到满意,但我无法让这个数字适合面板:
具有所有爪子的大面板应缩放以适合面板,同时保持其纵横比。
所以我想知道,为什么这个数字不会扩展到适合小组?
答案 0 :(得分:6)
您可以创建具有明确边界的轴对象,而不是从add_subplot
方法获取轴。而不是
self.axes = self.figure.add_subplot(111)
使用
self.axes = self.figure.add_axes([0,0,1,1])
四个数字是轴的左边缘,下边缘,宽度和高度,以图形宽度和高度的分数表示。 [0,0,1,1]
会扩展图像以适应整个图形。当然,宽高比仍然存在问题。如果要保持图像的纵横比,则不会始终填充整个窗口小部件空间(取决于窗口小部件的形状)。如果宽高比变化没问题,你可以像这样调用im_show
self.axes.imshow(self.data, interpolation="quadric", aspect='auto')
无论形状如何,都会使图像填充小部件。
如果没有自动宽高比,则会导致: