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 не поддерживает прозрачность, поэтому приведенный выше код не будет работать, если вы сохраняете в этом формате.