Python 奇怪的matplotlib大小调整行为

Python 奇怪的matplotlib大小调整行为,python,matplotlib,pyqt4,Python,Matplotlib,Pyqt4,我将matplotlib嵌入到我的PyQt4应用程序中,并使用它来显示图像。matplotlib控件显示在QDockWidget中,我将其一些参数设置如下: imagePlot = self.axes.imshow(myNumpyArray, interpolation = "nearest") imagePlot.axes.set_axis_off() imagePlot.axes.get_xaxis().set_visible(False) imagePlot.axes.get_yaxis(

我将matplotlib嵌入到我的PyQt4应用程序中,并使用它来显示图像。matplotlib控件显示在QDockWidget中,我将其一些参数设置如下:

imagePlot = self.axes.imshow(myNumpyArray, interpolation = "nearest")
imagePlot.axes.set_axis_off()
imagePlot.axes.get_xaxis().set_visible(False)
imagePlot.axes.get_yaxis().set_visible(False)
self.fig.subplots_adjust(bottom = 0, top = 1, left = 0, right = 1)
这具有所需的效果,即在保持纵横比的同时,在QDockWidget中显示尽可能多的图像填充空间。我可以通过水平收缩然后展开来调整dock小部件的大小,这样图像显示就正确了(在保持纵横比的同时尽可能多地填充空间)。现在,如果我添加以下行:

imagePlot.axes.set(adjustable = "datalim")
我会有意想不到的行为。最初,图像的显示方式与之前相同,但在水平收缩和展开后,matplotlib似乎在数据周围引入了边框。例如,以下是最初(正确)显示的图像:

下面是我拖动包含dock小部件的一侧并收缩,然后展开回原始大小后matplotlib显示的内容。请注意图像周围边框的外观


这是什么原因造成的?我如何预防?谢谢。

如果它在没有设置的情况下工作正常,为什么要包括它而不忽略它?对不起,我忽略了这一点…我正在通过设置xlim和ylim放大,我需要利用所有可用的空间。如果我没有指定“adjustable=datalim”,那么绘图只在初始区域中绘制(我会放大,但在绘图的左侧和右侧仍有填充)。