将颜色栏与图形对齐

时间:2020-03-07 08:12:50

标签: python subplot colorbar

我想在每行的末尾绘制一个不同的颜色条,而不会破坏图形的对齐方式。我能够添加颜色条,但它弄乱了数字的对齐方式。我已经尝试过使用受限的布局,希望保留对齐方式,但是没有成功。附带说明一下,使用add_axes时,它工作得很好,但我觉得它太残酷了。

这是情节的示例脚本:

crs = ccrs.PlateCarree()
fig, axarr = plt.subplots(nrows=5, ncols=6, figsize=(20, 13),
                          subplot_kw={'projection': crs})

axlist = axarr.flatten()
for ax in axlist:
    plot_background(ax)

    axlist[0].contourf(lon, lat, t1['tas1'].sel(month=1), cmap='temp6',
                           transform=ccrs.PlateCarree())
    for i in np.arange(1,6):
        axlist[i].contourf(lon, lat, t_b['tas'+str(i)].sel(month=1),10, cmap='temp6',
                           vmin=-6,vmax=5,transform=ccrs.PlateCarree())

    for i, num in enumerate(np.arange(7,12)):
        axlist[num].contourf(lon, lat, t1['tas'+str(i+1)].sel(month=1),10, cmap='temp6',
                           vmin=0.3,vmax=1.8,transform=ccrs.PlateCarree())

    for i, num in enumerate(np.arange(13,18)):
        axlist[num].contourf(lon, lat, t2['tas'+str(i+1)].sel(month=1), cmap='temp6',
                           vmin=0.3,vmax=1.8,transform=ccrs.PlateCarree())

    for i, num in enumerate(np.arange(19,24)):
        m = axlist[num].contourf(lon, lat, t3['tas'+str(i+1)].sel(month=1), cmap='temp6',
                          vmin=0.2,vmax=1.2,transform=ccrs.PlateCarree())

    for i, num in enumerate(np.arange(25,30)):
        axlist[num].contourf(lon, lat, t4['tas'+str(i+1)].sel(month=1), cmap='temp6',
                           vmin=0.4,vmax=3,transform=ccrs.PlateCarree())

    fig.tight_layout(pad=0.0)

for j in np.arange(1,5):
    fig.delaxes(axarr[j,0])

for i in (5,11,17,23,29):
        plt.colorbar(cs1, ax=axlist[i],extend='both',orientation='vertical', aspect=10)



plt.show()

enter image description here

1 个答案:

答案 0 :(得分:0)

我能够通过添加以下内容来解决该问题:

for i in (5,11,17,23,29):
    pos1= axlist[i].get_position()
    pos2 = [pos1.x0 + 0.27, pos1.y0,  pos1.width / 30.0, pos1.height] 
    cax = fig.add_axes(np.array(pos2)) 
    fig.colorbar(cs1, cax,extend='both',orientation='vertical',aspect=10)

将不得不更改fig.colorbar中的标量可映射,但是一旦我为不同的图设置了颜色限制以确保我添加了正确的色带范围,就可以通过循环处理它来轻松解决。 / p>

enter image description here