绘制非标准轴

Plotting non-standard axes

我正在使用 RA 和 Dec 坐标绘制图像。 图像与 (RA, Dec) = (0,0) 点重叠。对于 y 轴(偏角),这很好,但对于 x 轴,以度为单位,我发现很难正确绘制它。

我希望绘图从 (RA, Dec) = (358, -2) 开始,跨越四平方度直到 (2, 2)。 有没有办法让 python/matplotlib 理解 x 轴上的 360 度 = 0 度?

我是这样开始的:

lowerleft_ra = 358.
lowerleft_dec = -2.
lx = lowerleft_ra
ly = lowerleft_dec
uy = lowerleft_dec + 4.
ux = lowerleft_ra + 4.

plt.imshow(image, origin = 'lower', extent = [lx, ux, ly, uy])

这使得 x 轴从 358 跨度到 362,这不是我要找的。 然后我尝试如下修改它:

if lowerleft_ra + 4. > 360.:
    ux = lowerleft_ra + 4. - 360.
else:
    ux = lowerleft_ra + 4.

但这只是将 x 轴 运行 设置为从 358 到 2 度的相反顺序。

我怎样才能让它达到 358、359、0、1、2?

传递给 imshow 的范围信息通知 matplotlib 您正在绘制的对象的大小(比例、比例等)。绘制完成后,您可以自由地手动调整轴。虽然我认为您不能告诉 matplotlib 绘制具有 non-linear 值的轴,但您 可以 替换刻度标签。

我建议创建一个从 -2 到 +2 的比例,然后使用以下方法根据您的喜好应用刻度标签:

plt.xticks([-2,-1,0,1,2], [358,359,0,1,2])

或使用 API

ax.set_xticks([-2,-1,0,1,2])
ax.set_xticklabels([358,359,0,1,2])

这给了我以下情节: