小刻度显示不正确
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
),次要刻度将不再正确显示。
知道如何解决这个问题吗?谢谢!
导入 MultipleLocator 和 from matplotlib.ticker import MultipleLocator
并添加 cbar.ax.yaxis.set_minor_locator(MultipleLocator(ticks[1]/5))
解决了问题。但是,它并没有解释它。
使用以下代码,我得到一个最小值为 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
),次要刻度将不再正确显示。
知道如何解决这个问题吗?谢谢!
导入 MultipleLocator 和 from matplotlib.ticker import MultipleLocator
并添加 cbar.ax.yaxis.set_minor_locator(MultipleLocator(ticks[1]/5))
解决了问题。但是,它并没有解释它。