matplotlib - 为子图设置一个公共颜色条
问题描述
我将通过 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()
解决方案
您可以只调用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)
输出:
推荐阅读
- python - 根据不同的表有效地复制数据帧行
- python - Monkeypatching 函数命名空间
- node.js - 由于 elifecycle 错误代码,Node 和 React 无法启动服务器
- python-3.x - 文本文件中每行的总字数
- r - 在 R 中从循环更改为函数 lapply
- maven - Maven 中的 java.lang.ClassNotFoundException
- typescript - TypeScript 函数不从超级接口推断泛型参数
- asp.net-core - 反序列化列表
带有使用 json.net 的字符串支持字段 - excel - 统计一个范围内的记录数,匹配另一个范围,满足多个条件
- eclipse - 为什么我不能在 Eclipse 中使用 org.apache.commons.math3?