APLpy/matplotlib: координируйте альфа-уровни сетки для показателя качества EPS

В обычном классе осей matplotlib можно установить линии сетки, чтобы иметь определенную прозрачность (альфа-уровень). Я пытаюсь использовать это с пакетом APLpy, используя следующее:

fig = pyplot.figure(figsize=(18,8))

gridspec_layout = gridspec.GridSpec(1,2)

gridspec_layout1 = gridspec.GridSpecFromSubplotSpec(3, 3, subplot_spec=gridspec_layout[1], hspace=0.0, wspace=0.0)

pyplot_0 = fig.add_subplot(gridspec_layout1[0])
pyplot_1 = fig.add_subplot(gridspec_layout1[1])
pyplot_2 = fig.add_subplot(gridspec_layout1[2])
pyplot_3 = fig.add_subplot(gridspec_layout1[3])
pyplot_4 = fig.add_subplot(gridspec_layout1[4])
pyplot_5 = fig.add_subplot(gridspec_layout1[5])
pyplot_6 = fig.add_subplot(gridspec_layout1[6])
pyplot_7 = fig.add_subplot(gridspec_layout1[7])
pyplot_8 = fig.add_subplot(gridspec_layout1[8])

M33 = aplpy.FITSFigure('myfits.fits', figure=fig, subplot=list(gridspec_layout[0].get_position(fig).bounds), dimensions=[0, 1], slices=[0])

M33 = aplpy.FITSFigure('myfits.fits')
M33.show_grid()
M33.set_grid_alpha(0.1)

pyplot.savefig('myeps.eps', format='eps', dpi=800, clobber=True)

Так что прозрачность очень высокая и очень тонкая. Однако, когда я сохраняю график как файл формата.eps, прозрачность теряется, и мои линии становятся белыми. В обычном matplotlib я обычно использую:

ax.set_rasterized(True)

Такой, что прозрачность выглядит как следует.

Мне было интересно, если есть эквивалент для класса aplpy.FITSFigure...?

Большое спасибо!

1 ответ

В функции сохранения есть необязательный аргумент, прозрачный. Прозрачный установлен на Ложь по умолчанию. Если вы установите True, прозрачность должна быть сохранена при сохранении.

Так должно быть что-то вроде:

M33.save(filename, transparent=True, ..)

ETA: В комментариях ниже было указано, что формат EPS не поддерживает прозрачность, поэтому приведенный выше код не будет работать, если вы сохраняете в этом формате.

Другие вопросы по тегам