【问题标题】:set a common color bar for subplot为子图设置一个公共颜色条
【发布时间】:2021-05-22 21:14:41
【问题描述】:

我将通过 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()

【问题讨论】:

    标签: matplotlib subplot colorbar


    【解决方案1】:

    您可以只调用一次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)
    

    输出:

    【讨论】:

      猜你喜欢
      • 2018-01-18
      相关资源
      最近更新 更多