绘制非标准轴

时间:2016-01-17 23:57:45

标签: python matplotlib coordinate-systems axes imshow

我正在使用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?

1 个答案:

答案 0 :(得分:1)

传递给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])

这给了我以下情节:

enter image description here