小刻度显示不正确

Minor ticks do not display properly

使用以下代码,我得到一个最小值为 1 的颜色条(由于 hexbin() 方法中的 mincnt=1,0 值是透明的)。正确显示小刻度。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

# Create figure
fig = plt.figure(figsize=(3, 2))

# Data
vals_x = np.random.standard_normal(10000)
vals_y = np.random.standard_normal(10000)

# Plot data
ax = plt.subplot(111)
h = ax.hexbin(vals_x, vals_y, gridsize=40, extent=(-2, 2,-2, 2), 
              mincnt=1, cmap=cm.viridis_r, edgecolors='k', lw=0.025)
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)

# 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 False:
    ticks = np.insert(ticks, 0, 1) # add 1
cbar.set_ticks(ticks)
cbar.minorticks_on()

但是,如果我将“1”添加为第一个主要刻度(通过在上面的代码中将 False 切换为 True),次要刻度将不再正确显示。

知道如何解决这个问题吗?谢谢!

导入 MultipleLocatorfrom matplotlib.ticker import MultipleLocator 并添加 cbar.ax.yaxis.set_minor_locator(MultipleLocator(ticks[1]/5)) 解决了问题。但是,它并没有解释它。