Matplotlib极坐标图的反向径向轴

9
我正在尝试创建一个天文极坐标图,其径向轴从外围线的-45°开始增加到绘图中心的90°。但我没有找到任何方法来反转PolarAxes实例的径向轴。invert_yaxis() 方法根本不起作用。此外,还有一些隐藏的方法,比如ax.set_rlim(),但是没有文档说明。
以下是我的当前代码:
fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8], polar=True)
# ax.invert_yaxis()
ax.set_theta_zero_location('N')
ax.set_ylim(-45, 90)
ax.set_yticks(np.arange(-45, 90, 15))
ax.plot(ras, decs, linestyle='', marker='.')

以及我的情节


请参考以下问题的答案:https://dev59.com/_GfWa4cB1Zd3GeqPiJDe - Craig
2个回答

6

虽然这是一个老问题,但我终于找到了一个简单的答案。使用 ax.set_rlim(bottom=90, top=-45)。请注意,在调用 ax.plot() 之前必须设置,否则它将无法相应地转换绘制出来的点。


比被接受的答案容易得多,而且完美地运行。 - joanlofe

1

这个方法有点“hacky”,但如果你知道边界(似乎是对应于赤纬),你可以这样做:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_axes([0.1,0.1,0.8,0.8], polar=True)
# ax.invert_yaxis()
ax.set_theta_zero_location('N')
ax.set_rlim(90, -45, 1)
# Note: you must set the end of arange to be slightly larger than 90 or it won't include 90
ax.set_yticks(np.arange(-45, 91, 15))
ax.set_yticklabels(ax.get_yticks()[::-1])
ax.plot([0,10,20], 90-np.array([12,13,14]), linestyle='', marker='.')
fig.show()

enter image description here


看起来还可以,但实际的轴仍然是相同的 - 看一下数值。因此,我们还需要将它们转换。 - Hello Human
这并没有回答问题,分数仍然需要在坐标变换下打印正确的方式。 - Tobbey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接