RA vs DEC(赤道坐标系)2d用matplotlib绘图

时间:2017-03-30 12:29:08

标签: python matplotlib plot astronomy astropy

我想绘制一些显示天文天文位置的二维地图。

即:

我有一些带有赤道坐标的数据ASCII表(RA - 右上升,DEC - 赤纬)。 一个例子:

enter image description here

这里以小时(h),分钟(m)和秒(s)为单位测量RA; DEC - 以度(°),分钟(')和秒(“)为单位。

现在我正在使用TOPCAT绘制地图,它看起来像这样:

enter image description here

一切都很好,除了TOPCAT的工作无法编写脚本。但这是至关重要的,因为我有大量的数据。

我决定使用 matplotlib (带有astropy),但发现将轴设置为HH是一个难题:MM:SS和°:':“如上图所示。

astropy教程说:

  

轴对象ax知道期望角坐标值。一个   重要的事实是它期望值以弧度为单位   期望方位角值介于(-180º,180º)之间。这是   (目前)不可定制,所以我们必须强制我们的RA数据   符合这些规则!

但教程中的“当前”是2013年,也许它已经修好了?

所以问题是:我可以绘制我的RA / DEC数据并将轴设置为HH:MM:SS和°:':“使用matplotlib? P.S。:不添加FITS文件。

1 个答案:

答案 0 :(得分:0)

您可以使用您想要的任何内容,因为轴使用xticks()yticks()函数勾选标签。例如,函数调用xticks([1, 2, 3], ["a", "b", "c"])将为您提供沿x轴在1,2和3位置标记为a,b和c的刻度。因此,针对您的问题的(有点脏)解决方案看起来像这样:

  1. 以度数
  2. 绘制坐标
  3. 使用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)
    
  4. 你只需要编写一个函数degrees_to_hhmmss()和degrees_to_ddmmss()来将十进制度转换为字符串,如HH:MM:SS和°:':“(注意,你可以在matplotlib中使用LaTex表示法)