Как растеризовать колючки оси цветных полос в Matplotlib? - PullRequest
1 голос
/ 28 марта 2020

Я создаю большой PDF с многочисленными страницами. Я пытаюсь растеризовать все, что могу, чтобы сэкономить место на диске. Тем не менее, с цветными полосами особенно сложно справиться.

Может ли кто-нибудь удастся растеризовать шипы оси цветовой полосы в приведенном ниже примере?

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 не вариант, так как я хочу, чтобы заголовок рисунка не был растеризован (это единственное, что я не хочу растеризовывать)

1 Ответ

0 голосов
/ 28 марта 2020

Оказывается, необходим прямой доступ к оси цветовой шкалы. Для л oop ниже делает трюк

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')
...