График соответствует изображению с помощью matplotlib.imshow с WCS по осям X и Y

Мне было интересно, знает ли кто-нибудь, как построить подходящее изображение с помощью пакета python matplotlib.imshow с соответствующими значениями мировой системы координат или, возможно, даже с прямым восхождением или склонением в качестве значений x и y, а не с физическими значениями пикселей, аналогично нижнему. сюжет этой страницы: http://astroplotlib.stsci.edu/page_images.htm

К сожалению, предоставленный скрипт находится в IDL... что-то, чем я еще не владею...

Возможно, было бы полезно, если бы я обрисовал в общих чертах свой макет gridspec:

fig = pyplot.figure(figsize=(11,11))

gridspec_layout = gridspec.GridSpec(3,3)
gridspec_layout.update(hspace=0.0, wspace=0.0)

hdulist_org_M33_UVM2 = fits.open('myfits.fits')
wcs = WCS(hdulist_org_M33_UVM2[0].header)

pyplot_2 = fig.add_subplot(gridspec_layout[2])

ax = WCSAxes(fig, [0.1, 0.1, 0.8, 0.8], wcs=wcs)

pyplot_2.add_axes(ax)

Но не повезло.

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

1 ответ

Решение

Одним из решений может быть использование subplot параметр дляFITSFigureи получить границы из вашей сетки.

Что-то вроде следующего:

from matplotlib import pyplot
from matplotlib import gridspec
import aplpy

fig = pyplot.figure(figsize=(11, 11))
gridspec_layout = gridspec.GridSpec(3, 3)
gridspec_layout.update(hspace=0.0, wspace=0.0)
axes = fig.add_subplot(gridspec_layout[2])
m33 = aplpy.FITSFigure('wfpcii.fits', figure=fig,
                       subplot=list(gridspec_layout[2].get_position(fig).bounds),
                       # dimensions and slices are not normally necessary;
                       # my test-figure has 3 axes
                       dimensions=[0, 1], slices=[0])
print(dir(gridspec_layout[2]))
print(gridspec_layout[2].get_position(fig).bounds)
m33.show_colorscale()
pyplot.show()

Не очень красиво, но это сработает. если я найду более простой способ прикрепить FITSFigure прямо к оси, я поправлю этот ответ или поставлю новый.

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