如何调整Matplotlib色条(Colorbar)刻度标签的垂直对齐方式
解决Matplotlib Colorbar刻度标签垂直对齐问题
- 问题根因:你遇到的这个情况是Matplotlib在旋转刻度标签时,默认给不同位置的标签设置了不一致的垂直对齐规则,导致底部和中间的标签和顶部显示不对齐。
- 解决方案:在设置yticklabels时,显式指定垂直对齐方式为顶部(
va='top'),强制所有标签遵循统一的对齐基准。
修改后的完整代码如下:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable ax = plt.subplot(111) data = np.random.uniform(0., 10., (50, 50)) im = plt.imshow(data) # Colorbar on the right side of ax. divider = make_axes_locatable(ax) cax = divider.append_axes("right", size="2%", pad=0.05) cbar = plt.colorbar(im, cax=cax) cbar.set_ticks([np.min(data), np.ptp(data) * .5, np.max(data)]) print(np.min(data), np.ptp(data) * .5, np.max(data)) # 添加va='top'参数统一垂直对齐方式 cbar.ax.set_yticklabels( ['{:.1E}'.format(0.00000133), '{:.1E}'.format(0.00000561), '{:.1E}'.format(0.0000948)], rotation=90, va='top' ) plt.show()
- 效果说明:加上
va='top'后,三个刻度标签都会以顶部为基准垂直对齐,和最上方的标签显示效果完全一致,整个colorbar的视觉呈现会更规整美观。
内容的提问来源于stack exchange,提问作者Gabriel




