已指定cax时如何缩小Matplotlib色条宽度?
解决Matplotlib色条宽度与绘图不匹配的问题
问题根源
当通过cax参数手动指定色条的坐标轴时,shrink和aspect参数会被忽略——色条的尺寸完全由fig.add_axes()传入的四个参数[left, bottom, width, height]控制。你当前设置的width=0.8(占整个画布宽度的80%)和height=0.06051数值接近,导致水平色条看起来异常宽,标签被截断。
解决步骤
调整fig.add_axes()的参数,缩小色条的高度(因为是水平方向,高度对应色条的实际宽度),同时按需调整位置:
修改色条创建的代码行:
# 调整height为更小的值,同时微调bottom位置保证间距 cbar=fig.colorbar(sh,cax=fig.add_axes([0.12, 0.05, 0.8, 0.02]), orientation='horizontal')
参数含义(均为相对于整个画布的比例,范围0-1):
left=0.12:色条左侧距离画布左边缘12%bottom=0.05:色条底部距离画布下边缘5%width=0.8:色条宽度占画布宽度80%,与上方子图区域对齐height=0.02:色条高度占画布高度2%,数值越小,色条越窄
额外注意
代码中ax.quiverkey(qu,X=0.9,Y=1.18,U=100,label='100kg/ms',labelpos='W')里的qu变量未定义,会触发报错,需提前创建Quiver对象后再调用该方法。
修改后的色条相关完整代码片段:
cbar=fig.colorbar(sh,cax=fig.add_axes([0.12, 0.05, 0.8, 0.02]), orientation='horizontal') cbar.ax.tick_params(labelsize=10) cbar.ax.set_title('kg/ms', fontsize=10) # 先定义qu对象再调用quiverkey # qu = ax.quiver(lon, lat, ufd, vfd) # ax.quiverkey(qu,X=0.9,Y=1.18,U=100,label='100kg/ms',labelpos='W')
内容的提问来源于stack exchange,提问作者Sreeshma
相关产品推荐
相关产品推荐

