如何在python中对齐地图和y图的y轴(纬度)

时间:2018-03-30 17:26:50

标签: matplotlib-basemap yaxis

我试图在情节中绘制两个面板。 第一个(左)是在y轴上具有纬度值的数据。第二个面板是地图。 我想两个面板的纬度值一致,但我不知道如何得到它。

我有这样的代码:

fig_mapa= plt.figure()

'''Mapa'''
ax1=fig_mapa.add_subplot(122)
map = Basemap(llcrnrlon=-90,llcrnrlat=-58.1,urcrnrlon=-32,urcrnrlat=12.6,
            resolution='f',projection='merc',lon_0=-58,lat_0=-25, ax=ax1)
map.drawparallels(np.arange(-90,90.,5), labels=[0,1,0,0], linewidth=0.5)
map.drawmeridians(np.arange(-180.,180.,5), labels=[0,0,0,1], linewidth=0.5)
map.readshapefile("./Fases_tectonicas/Shapefiles/Unidades_Fi",  'Unidades_Fi', linewidth=0.1)
#map.warpimage(image='./Geotiffs/NE1_HR_LC_SR_W_DR/NE1_HR_LC_SR_W_DR.tif', zorder=1)
map.drawcoastlines(linewidth=0.5, color='k')
Nombre_Unidad= []
for elemento in map.Unidades_Fi_info:
    Nombre_Unidad.append(elemento['NAME'])
for i in range(len(Nombre_Unidad)):
    draw=map.Unidades_Fi[i]
    poly=Polygon(draw, facecolor=color[Nombre_Unidad[i]],edgecolor='k', alpha=0.5,linewidth=0.1, zorder=2)
    plt.gca().add_patch(poly)

'''Gráfico Eventos Compresivos'''
ax2= fig_mapa.add_subplot(121)
ax2.set_ylim(-58.1,12.6)
ax2.set_xlim(120,0)
ax2.set_xlabel('Tiempo [Ma]')
ax2.set_ylabel('Latitud[°]')
ax2.grid()

1 个答案:

答案 0 :(得分:0)

对齐两个轴的最简单方法是使用sharex的{​​{1}}或sharey关键字。但是,plt.subplots显示的坐标和它用于Axes实例的坐标是两个不同的东西,所以如果你想要在第二个中有可理解的ytick标签和一些有意义的图形,你必须在两者之间进行转换。 Axes实例。下面我将展示如何对齐两个y轴,正确设置yticks并将数据转换为Basemap的数据坐标。我没有触及底图的创建。

Basemap

上面代码的结果如下:

result of the above code

希望这有帮助。