我正在尝试更改绘图中的轴背景,其中多个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
重新绘制了数字。
答案 0 :(得分:5)
这最终成了一个matplotlib错误。
在同一轴上渲染多个图像时,会在渲染为pdf时创建一个没有透明背景的合成图像,因此轴的背景颜色不会显示。
这已作为an issue I opened in the matplotlib's GitHub repo的一部分得到解决。
答案 1 :(得分:1)
查看您的matplotlibrc
。有一部分以savefig
开头的选项定义了您保存的数字的外观。即使默认matplotlibrc
也有此部分。