绘制适合 matplotlib.imshow 的图像,WCS 作为 x 和 y 轴
Plotting fits image with matplotlib.imshow with WCS as x and y axes
我想知道是否有人知道如何使用 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)
但运气不好。
非常感谢。
一种解决方案可能是使用 subplot
parameter to FITSFigure
,并从您的 gridspec 中获取边界。
大致如下:
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
直接附加到轴的更简单方法,我将修改此答案或添加一个新答案。
我想知道是否有人知道如何使用 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)
但运气不好。
非常感谢。
一种解决方案可能是使用 subplot
parameter to FITSFigure
,并从您的 gridspec 中获取边界。
大致如下:
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
直接附加到轴的更简单方法,我将修改此答案或添加一个新答案。