我将通过 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()
答案 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)
输出: