如何在 Matplotlib 中栅格化颜色条轴脊柱?

How to rasterize a color bar axis spines in Matplotlib?

我正在生成包含许多页面的大型 PDF。我试图光栅化其中的所有内容以节省一些磁盘 space。然而,彩条特别难处理。

有人可以设法栅格化下例中的颜色条轴脊柱吗?

import matplotlib.pyplot as plt
import numpy as np

ax = plt.subplot(111)

im = ax.imshow(np.arange(100).reshape((10, 10)))
cb = plt.colorbar(im)

ax.set_rasterized(True)
plt.suptitle('Title')
plt.savefig('test.pdf')

就像现在一样,放大时,图像的轴看起来像素化,但颜色条的轴不是。我希望两者都被像素化。

我以为 im.colorbar.solids.set_rasterized(True) 会成功,但事实并非如此。将图像保存为 PNG 文件不是一种选择,因为我想保持图形标题不光栅化(这是我唯一不想光栅化的东西)

原来需要直接访问颜色条的轴。下面的 for 循环可以解决问题

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()           # <--- New line
ax = plt.subplot(111)

im = ax.imshow(np.arange(100).reshape((10, 10)))
cb = plt.colorbar(im)

for ax in fig.get_axes():    # <--- New line
    ax.set_rasterized(True)  # <--- New line     

plt.suptitle('Title')
plt.savefig('test.pdf')