为子图设置通用颜色条

时间:2021-02-19 21:10:32

标签: matplotlib subplot colorbar

我将通过 plt 模块绘制一个 numpy 数组。我不知道如何为我的子图提供一个共享的颜色条。或者,即使它绘制了两个,我也想将它提升到两个颜色条的 (-0.4-0.4) 范围内。

谢谢大家 这是我的代码:

from mpl_toolkits.axes_grid1 import make_axes_locatable
fig,(ax1,ax2) = plt.subplots(1,2,figsize=(10, 10))

im1 = ax1.imshow(input[:,:,141],cmap = 'Spectral_r')
divider = make_axes_locatable(ax1)
cax = divider.append_axes("right", size="5%", pad=0.05)
fig.colorbar(im1, cax=cax, orientation='vertical')

im2 = ax2.imshow(out_put[:,:,141], cmap = 'Spectral_r')
divider = make_axes_locatable(ax2)
cax = divider.append_axes("right", size="5%", pad=0.05)
fig.colorbar(im2, cax=cax, orientation='vertical')
ax1.set_title('Input', fontsize = 16)
ax2.set_title('Output of model', fontsize = 16)
ax2.set_axis_off()
ax1.set_axis_off()


plt.show()

1 个答案:

答案 0 :(得分:0)

您只需调用一次 colorbar,然后将两个 ax1,ax2 都传递给 ax。对于 clim 选项,我的 matplotlib 说 cb.set_clim 已弃用。将 vmin,vmax 传递给 imshow 可能会更好:

fig,(ax1,ax2) = plt.subplots(1,2,figsize=(13, 5))

im1 = ax1.imshow(np.random.uniform(-1,1, size=(10,10)),
                 vmin=-0.4, vmax=0.4,
                 cmap = 'Spectral_r')

im2 = ax2.imshow(np.random.uniform(-1,1, size=(10,10)), 
                 vmin=-0.4, vmax=0.4,
                 cmap = 'Spectral_r')

cb = fig.colorbar(im2, ax=(ax1, ax2), orientation='vertical')
cb.set_clim(-0.4,0.4)

输出:

enter image description here