记录我的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色条就能正常显示了。