我有一个名为“我的”的FITS文件_立方体拟合'与WCS。该文件包含轴1和轴2(X和Y)的空间信息和轴3(Z)的光谱信息。当我用astropy.io.适合,谱轴为0,空间轴为1和2。文件的加载方式如下:
import astropy.io.fits as pyfits
filename = 'my_cube.fits'
my_data = pyfits.getdata(filename)
my_header = pyfits.getheader(filename)
我一直在使用matplotlib来显示数据,我想知道如何使用WCS显示数据立方体的单个光谱帧。比如说:
^{pr2}$如果我这么做,我有:
...
File "/usr/local/lib/python3.4/dist-packages/matplotlib/figure.py", line 1005, in add_subplot
a = subplot_class_factory(projection_class)(self, *args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/matplotlib/axes/_subplots.py", line 73, in __init__
self._axes_class.__init__(self, fig, self.figbox, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/core.py", line 49, in __init__
self.patch = self.coords.frame.patch
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/frame.py", line 129, in patch
self._update_patch_path()
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/frame.py", line 115, in _update_patch_path
self.update_spines()
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/frame.py", line 192, in update_spines
self['b'].data = np.array(([xmin, ymin], [xmax, ymin]))
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/frame.py", line 40, in data
self._world = self.transform.transform(self._data)
File "/usr/local/lib/python3.4/dist-packages/wcsaxes/transforms.py", line 166, in transform
world = self.wcs.wcs_pix2world(pixel_full, 1)
File "/usr/local/lib/python3.4/dist-packages/astropy/wcs/wcs.py", line 1329, in wcs_pix2world
'output', *args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/astropy/wcs/wcs.py", line 1231, in _array_converter
return _return_single_array(xy, origin)
File "/usr/local/lib/python3.4/dist-packages/astropy/wcs/wcs.py", line 1212, in _return_single_array
"of shape (N, {0})".format(self.naxis))
ValueError: When providing two arguments, the array must be of shape (N, 3)
您的WCS对象包含两个空间轴和光谱轴,因为您用完整的标题初始化了它(我假设您的头也包含一个光谱WCS解决方案)。因此,仅使用空间创建二维绘图是行不通的,因为给子图的投影是三维的
我自己没有这样做,也没有一个示例文件,但是WCS文档提到可以使用the sub function, or even the celestial functions来获取单个轴或天体(空间)轴;这些函数将返回一个只包含这些轴的WCS对象。在
因此,您可以使用以下方法:
这是^{} 的一个很好的用例,它有效地包装了多维数据集使用的
astropy.io.fits
。在如果安装了^{} ,Evert的解决方案一经更正就可以工作了。在
要使用
spectral_cube
,一个简单的例子是:相关问题 更多 >
编程相关推荐