首页 > 解决方案 > 如何反转 r 以将天文学高度与极坐标图相匹配

问题描述

我有一个包含这些位置的方位角、高度和测量值的文件。

示例:Az Alt 值

0 10 5

0 45 7

0 80 10

10 10 4

10 45 7

10 80 11

…………

这些点并没有映射整个天空,而且情节非常空旷。我使用 scipy griddata 在点之间进行插值以填充绘图。我转换为笛卡尔坐标以使用 griddata。

#x = azimuth
#y = altitude
x,y = alt * np.cos(az), alt*np.sin(az)
xi = np.linspace(0, 90, 100)
yi = np.linspace(np.radians(10.), np.radians(350.), 100)
zi = griddata((x, y), value, (xi[None,:], yi[:,None]), method='cubic')

ax = plt.subplot(111, projection='polar')
cm = plt.cm.get_cmap('jet_r')
levels = np.linspace(min(value),max(value), 100)
cf = plt.contourf(yi,90-xi,zi.T,levels=levels,cmap=cm)
cbar = plt.colorbar()
cbar.set_ticks(np.arange(15.5,22, .5))
cbar.set_label(r'mag/arcsec$^2$')
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
ax.yaxis.grid(False)
#ax.set_rticks([])
ax.scatter(az,90-alt, marker='.', edgecolors='k', facecolors='none')
ax.xaxis.grid(False)
plt.ylim(0,90)

plt.show()

这给了我 在此处输入图像描述

在上图中,您可以看到 r 在中心为 0,边缘为 90。我想我可以通过从 90 中减去我的高度来解决这个问题,但是,数据似乎与绘图上的数据不匹配。

我怎样才能通过反转 r 轴以使外部为 0,在中心为 90,就像天文学一样?

其次,我在顶部有 0,就像在顶部的 North 并反转旋转以匹配 N、E、S、W 方位角。

但是,该图没有意义,因为在方位角 225 度处,15 度高度处的值是 16.5。该图显示该点的测量值为 18.5。这让我相信我自己或 matplotlib 错误地应用了一些缩放。

非常感谢任何解决此问题的帮助。

标签: pythonmatplotlibpolar-coordinates

解决方案


推荐阅读