我正在使用 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 用非线性值绘制轴,但您可以替换刻度标签。
我建议创建一个从 -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])
这给了我以下情节:
关于python - 绘制非标准轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845306/