Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框

Posted

技术标签:

【中文标题】Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框【英文标题】:Matplotlib.savefig ignoring axes and plotting black border around image 【发布时间】:2019-01-26 23:08:12 【问题描述】:

我有一个嵌入在 QtAggFigureCanvas (PyQt4) 中的 matplotlib 图,带有标题和轴标签(示例如下所示)。

我实现了一个按钮来将图形保存到 png 文件中。该图是通过以下方式创建的:

self.plkDpi = 100
self.plkFigure = Figure(dpi=self.plkDpi)
...
self.plkAxes = self.plkFig.add_subplot(111)
...
self.plkAxes.set_xlabel(...)
self.plkAxes.set_ylabel(...)
self.plkAxes.set_title(...)

当我点击保存按钮时,会执行以下代码:

self.plkFig.savefig('tmp.png', bbox_inches='tight', dpi=self.plkDpi)

由于某种原因,最终绘图中省略了坐标轴和绘图标题。但它们没有被裁剪 - 图形周围有一个黑框,只是空白(见下文)

无论我尝试什么,更改 figsize、dpi、边界框等。我无法使用轴标签保存图形。

【问题讨论】:

能否创建一个minimal reproducible example 以便我们重现该问题? 【参考方案1】:

请看一下这个链接:Black background behind a figure's labels and ticks, only after saving figure but not in Python Interactive view (VS Code with Jupyter functionality)?。

似乎 plt.savefig() 覆盖了绘图参数。所以你必须再次定义它们。试试这个:plt.savefig('yourfilenamehere.png', facecolor='w')。这会将边框设置为白色。

最好的问候,

【讨论】:

谢谢你让我开心!

以上是关于Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib savefig() 绘图不同于 show()

Matplotlib,savefig() 的替代品以提高保存到 CString 对象时的性能?

matplotlib savefig() 大小控制

为啥 Matplotlib savefig 图像重叠?

Matplotlib savefig 带有图外的图例

为什么你用matplotlib savefig保存下来的图像是一个空白图片?