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

Python 当绘制半对数x轴时,我得到了两个十年:如何强制显示每个十年?,python,matplotlib,plot,logarithm,Python,Matplotlib,Plot,Logarithm,我面临一个简单的问题。当我这样做半对数绘图(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

我面临一个简单的问题。当我这样做半对数绘图(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_参数(axis=“x”,nbins=20)文件“/opt/intel/intelpython3/lib/python3.7/site packages/matplotlib/pyplot.py”,第2691行,在locator_参数返回gca()中。locator_参数(axis=axis,tight=tight,**kwargs)文件“/opt/intel/intelpython3/lib/python3.7/site packages/matplotlib/axes/_base.py”,第2913行,在locator_params self.xaxis.get_major_locator().set_params(**kwargs)TypeError:set_params()得到一个意外的关键字参数“nbins”

您可以使用nbins=所需的刻度数

plt.locator_params(axis="x", nbins=20)
plt.plot(X, Y)
可能有助于在对数刻度上添加小刻度