我试图通过参数extent
在几个imshow()
调用在各个位置调用渲染图像的图上更改轴背景。使用savefig导出图形()在matplotlib中渲染轴背景
当我保存使用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
。
我只是想运行脚本和.pdf和png格式的版本都具有正确的背景。你正在使用哪个版本的matplotlib?我的是'1.2.0'。 – 2013-04-08 18:12:48
我目前正在运行1.2.1,但在旧版本上尝试过,结果相同。我也在OS X上运行它。 – fgb 2013-04-08 18:54:50
看起来你正在使用一些与默认不同的花哨的数学风格衬线字体。我想知道在你的'matplotlibrc'文件中定义的一些设置是否会搞乱PDF渲染。也许尝试重命名该文件,以便使用带默认参数的'matplotlib'?还有一个想法 - 它是否能够正确渲染为EPS文件? – 2013-04-08 19:11:27