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])

上面的代码运行出来:

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


 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()

如下图:

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


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

你可能感兴趣的:(python,matplotlib,pycharm)