绘制半对数 x 轴时,我得到了一个双十年:如何强制显示每十年?

I get a double decade when plot semi-log x-axis : how to force display each decade?

我面临一个简单的问题。当我像这样做半对数图(在 x 轴上记录)时:

# Number of values for loop
num_sigma_loop = 100
sigma_start = 2
sigma_end = -6
sigma = np.logspace(sigma_start,sigma_end,num_sigma_loop)
...
...
# Computation of FoM_final
...
...
fig, axes = plt.subplots()
plt.xscale('log')
plt.tick_params(axis='y', which='minor')

for j in range(1):
  inv_sigma = 1./sigma
  axes.plot(inv_sigma, FoM_final, label='5 common bias : '+r'$b'+r'_{sp}=b'+r'_{ph}$')

axes.legend(loc="best")

plt.xlabel('1/sigma', fontsize=10)

然后,我得到下图:

如您所见,我在 x 轴上有两个十年:如何强制 matplotlib 绘制每个十年而不是从 10^1 直接传递到 10^3?

最后,如何使绘制的每个十年的次要 xtik 出现?

编辑

给出的解决方案无法识别参数 nbins :

我收到以下错误:

plt.locator_params(axis="x", nbins=20) File "/opt/intel/intelpython3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2691, in locator_params return gca().locator_params(axis=axis, tight=tight, **kwargs) File "/opt/intel/intelpython3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2913, in locator_params self.xaxis.get_major_locator().set_params(**kwargs) TypeError: set_params() got an unexpected keyword argument 'nbins'

您可以使用 nbins = 您想要的刻度数

plt.locator_params(axis="x", nbins=20)
plt.plot(X, Y)

可能有助于在对数刻度上添加小刻度。