Matplotlib hexbin色条新增自定义主刻度后次刻度显示异常如何解决
修复方法
手动修改主刻度后,matplotlib默认次刻度定位器没有适配新的刻度区间,需要显式重新设置次刻度定位器,修改色条部分代码如下:
# Show colorbar axin = ax.inset_axes([0.02, 0.57, 0.03, 0.4]) cbar = plt.colorbar(h, cax=axin) cbar.ax.tick_params(which='major', size=6, width=0.5) cbar.ax.tick_params(which='minor', size=3, width=0.3) ticks = cbar.get_ticks() if True: ticks = np.insert(ticks, 0, 1) # add 1 cbar.set_ticks(ticks) # 新增以下两行即可修复次刻度显示异常 from matplotlib.ticker import AutoMinorLocator cbar.ax.yaxis.set_minor_locator(AutoMinorLocator()) cbar.minorticks_on()
原理说明
- 手动插入主刻度后,默认次刻度定位器仍基于原始主刻度区间计算次刻度位置,新增的1到原首个主刻度的区间没有被纳入计算,导致次刻度缺失。
- 调用
AutoMinorLocator()会基于当前所有已设置的主刻度重新计算次刻度位置,覆盖原有定位逻辑,即可让全区间次刻度正常显示。
内容的提问来源于stack exchange,提问作者TVG
相关产品推荐
相关产品推荐

