回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试更改绘图中的轴背景,其中几个<code>imshow()</code>调用通过<code>extent</code>参数在不同位置呈现图像。</p>
<p>当我使用<code>savefig()</code>保存图形的pdf时,如果轴显示多个图像,则会丢失背景色。请注意,在导出同一图形的png时不会发生这种情况。</p>
<p>下面是一个最小的脚本来说明这个问题:</p>
<pre><code>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')
</code></pre>
<p>这是脚本的pdf输出(eps输出相同):</p>
<p><img src="https://i.stack.imgur.com/R13aj.png" alt="test.pdf"/></p>
<p>这是脚本的预期输出(保存为png):</p>
<p><img src="https://i.stack.imgur.com/Zlgd6.png" alt="test.png"/></p>
<p>我遇到matplotlib错误了吗,还是缺少了修复pdf输出的命令?</p>
<p>编辑:我用默认的<code>matplotlibrc</code>重新绘制了这些图形。</p>