如何控制由astropy和matplotlib制成的地图中的轴单位?

时间:2019-05-17 10:24:52

标签: astropy

在使用astropy和matplotlib创建地图时,右侧提升轴上的单位是deg / min / sec,而不是h / m / s。我没有找到一种简单的方法来选择h / m / s单位。

例如,如果我尝试复制documentation of astropy.wcs中的Horsehead星云图,则会得到R.A。轴以度/分/秒为单位。

代码很简单:

from matplotlib import pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS
from astropy.utils.data import get_pkg_data_filename

filename = get_pkg_data_filename('tutorials/FITS-images/HorseHead.fits')
hdu = fits.open(filename)[0]
wcs = WCS(hdu.header)

fig = plt.figure()
fig.add_subplot(111, projection=wcs)
plt.imshow(hdu.data, origin='lower', cmap=plt.cm.viridis)
plt.xlabel('RA')
plt.ylabel('Dec')
plt.show()

应该产生这个:
正确的单位

1

但是我明白了

单位错误

wrong units

1 个答案:

答案 0 :(得分:0)

您可以使用:

ax = fig.gca()
ra = ax.coords[0]
ra.set_format_unit('hour')

例如如此处指定:http://docs.astropy.org/en/stable/visualization/wcsaxes/controlling_axes.html

但是,当我运行相同的示例时,它默认为小时,所以我不确定您设置了哪种配置,而默认为度。