我想绘制一些显示天文天文位置的二维地图。
即:
我有一些带有赤道坐标的数据ASCII表(RA - 右上升,DEC - 赤纬)。 一个例子:
这里以小时(h),分钟(m)和秒(s)为单位测量RA; DEC - 以度(°),分钟(')和秒(“)为单位。
现在我正在使用TOPCAT绘制地图,它看起来像这样:
一切都很好,除了TOPCAT的工作无法编写脚本。但这是至关重要的,因为我有大量的数据。
我决定使用 matplotlib (带有astropy),但发现将轴设置为HH是一个难题:MM:SS和°:':“强烈>如上图所示。
astropy教程说:
轴对象ax知道期望角坐标值。一个 重要的事实是它期望值以弧度为单位 期望方位角值介于(-180º,180º)之间。这是 (目前)不可定制,所以我们必须强制我们的RA数据 符合这些规则!
但教程中的“当前”是2013年,也许它已经修好了?
所以问题是:我可以绘制我的RA / DEC数据并将轴设置为HH:MM:SS和°:':“使用matplotlib? P.S。:不添加FITS文件。
答案 0 :(得分:0)
您可以使用您想要的任何内容,因为轴使用xticks()
和yticks()
函数勾选标签。例如,函数调用xticks([1, 2, 3], ["a", "b", "c"])
将为您提供沿x轴在1,2和3位置标记为a,b和c的刻度。因此,针对您的问题的(有点脏)解决方案看起来像这样:
使用xticks()和yticks()函数配置轴以显示hh:mm:ss和°:':“值:
# Set up RA coordinates along x-axis
ticksLocationsRA = linspace(minRA, maxRA, numberOfTicks)
ticksLabelsRA = degrees_to_hhmmss(ticksLocatoinsRA)
xticks(ticksLocationsRA, ticksLabelsRA)
# The same with DEC coodinates
ticksLocationsDEC = linspace(minDEC, maxDEC, numberOfTicks)
ticksLabelsDEC = degrees_to_ddmmss(ticksLocatoinsDEC)
yticks(ticksLocationsDEC, ticksLabelsDEC)
你只需要编写一个函数degrees_to_hhmmss()和degrees_to_ddmmss()来将十进制度转换为字符串,如HH:MM:SS和°:':“(注意,你可以在matplotlib中使用LaTex表示法)