其他分享
首页 > 其他分享> > 使用savefig()将图形导出为pdf会在matplotlib中弄乱轴背景

使用savefig()将图形导出为pdf会在matplotlib中弄乱轴背景

作者:互联网

我试图在一个图上改变轴背景,其中几个imshow()调用通过extent参数在不同位置渲染图像.

当我使用savefig()保存图形的pdf时,如果轴显示多个图像,我将丢失背景颜色.请注意,导出相同数字的png时不会发生这种情况.

这是一个说明问题的最小脚本:

import matplotlib.pyplot as plt
from numpy.random import rand

fig, ax = plt.subplots(nrows=3, ncols=1, sharex=True)

ax[0].imshow(rand(15,15), extent=[0, 2, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[0].set_axis_bgcolor('k')

ax[1].imshow(rand(15,15), extent=[0, 2, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[1].imshow(rand(15,15), extent=[4, 6, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[1].set_axis_bgcolor('k')

ax[2].imshow(rand(15,15), extent=[0, 2, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[2].imshow(rand(15,15), extent=[4, 6, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[2].imshow(rand(15,15), extent=[8, 10, 15, 0], \
            cmap=plt.cm.gray, aspect='auto', interpolation='Nearest')
ax[2].set_axis_bgcolor('k')

ax[-1].set_xlim([0, 12])
fig.savefig('test.pdf', format='PDF')
fig.savefig('test.png', format='PNG')

这是脚本的pdf输出(eps输出相同):

这是脚本的预期输出(保存为png):

我是否碰到了一个matplotlib错误,或者是否有一些我错过的命令会修复pdf输出?

编辑:我用默认的matplotlibrc重新绘制了数字.

解决方法:

这最终成了一个matplotlib错误.

在同一轴上渲染多个图像时,会创建在渲染为pdf时没有透明背景的合成图像,因此轴的背景颜色不会显示.

这已作为an issue I opened in the matplotlib’s GitHub repo的一部分得到解决.

标签:python,matplotlib,osx-mountain-lion,macos
来源: https://codeday.me/bug/20190517/1122650.html