python绘制多个子图时,解决colorbar色条不能正常显示的问题

      记录我的pyhon"debug"日常。

1、先绘制多个空白子图的框架,设置好布局(4行3列+3个色标)。

from matplotlib import cm
import matplotlib.colors
import matplotlib.pyplot as plt
import matplotlib as mpl

# 画布,设置图的像素为600
fig = plt.figure(figsize=(25, 12), dpi=600)

# 第一列图
ax1 = plt.axes([0.07, 0.75, 0.27, 0.17])
ax2 = plt.axes([0.07, 0.55, 0.27, 0.17])
ax3 = plt.axes([0.07, 0.35, 0.27, 0.17])
ax4 = plt.axes([0.07, 0.15, 0.27, 0.17])

# 第一列的色标位置
ax13 = fig.add_axes([0.09, 0.05, 0.23, 0.02])

# 第二列图
ax5 = plt.axes([0.39, 0.75, 0.27, 0.17])
ax6 = plt.axes([0.39, 0.55, 0.27, 0.17])
ax7 = plt.axes([0.39, 0.35, 0.27, 0.17])
ax8 = plt.axes([0.39, 0.15, 0.27, 0.17])

# 第二列的色标位置
ax14 = fig.add_axes([0.41, 0.05, 0.23, 0.02])

# 第三列图
ax9 = plt.axes([0.71, 0.75, 0.27, 0.17])
ax10 = plt.axes([0.71, 0.55, 0.27, 0.17])
ax11 = plt.axes([0.71, 0.35, 0.27, 0.17])
ax12 = plt.axes([0.71, 0.15, 0.27, 0.17])

# 第三列的色标位置
ax15 = fig.add_axes([0.73, 0.05, 0.23, 0.02])

上面的代码运行出来:


 2、设置好布局之后读数据,正式绘图。

注:这里主要展示绘图顺序,绘制的图的类型需要自己设置。

如果是按照上面代码的绘图顺序,读完数据之后,绘图时可能会出现色条绘制异常的情况(我画的时候出现了第一列和第二列的色条残缺的情况),

这个时候,只需要将绘制顺序改变一下,就可以使色条正常显示——先统一绘制子图,再统一绘制色条

fig = plt.figure(figsize=(25, 12), dpi=600)

# 三列的子图统一先画
ax1 = plt.axes([0.07, 0.75, 0.27, 0.17])
ax2 = plt.axes([0.07, 0.55, 0.27, 0.17])
ax3 = plt.axes([0.07, 0.35, 0.27, 0.17])
ax4 = plt.axes([0.07, 0.15, 0.27, 0.17])

ax5 = plt.axes([0.39, 0.75, 0.27, 0.17])
ax6 = plt.axes([0.39, 0.55, 0.27, 0.17])
ax7 = plt.axes([0.39, 0.35, 0.27, 0.17])
ax8 = plt.axes([0.39, 0.15, 0.27, 0.17])

ax9 = plt.axes([0.71, 0.75, 0.27, 0.17])
ax10 = plt.axes([0.71, 0.55, 0.27, 0.17])
ax11 = plt.axes([0.71, 0.35, 0.27, 0.17])
ax12 = plt.axes([0.71, 0.15, 0.27, 0.17])

# 色条统一最后画
cmap = cm.get_cmap('jet')
norm = mpl.colors.Normalize(vmin=0, vmax=10)  # 设置最值
im = mpl.cm.ScalarMappable(norm=norm, cmap=cmap)  # 这一步必不可少

ax13 = fig.add_axes([0.09, 0.05, 0.23, 0.02])
cb13 = plt.colorbar(im, cax=ax13,orientation='horizontal')

ax14 = fig.add_axes([0.41, 0.05, 0.23, 0.02])
cb14 = plt.colorbar(im, cax=ax14,orientation='horizontal')

ax15 = fig.add_axes([0.73, 0.05, 0.23, 0.02])
cb15 = plt.colorbar(im, cax=ax15,orientation='horizontal')

plt.show()

如下图:


ok,至此colorbar色条就能正常显示了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值