<p>已解决,基于上面的代码。这个要简单得多。您需要使用Xticklabel</p>
<pre><code>%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
from sympy import pretty_print as pp, latex
print('MATPLOTLIB VERSION : %s' % mpl.__version__)
plt.style.use("default")
# DATA
x = [0.1, 0.075, 0.05, 0.025, 0.01, 0.0075, 0.005, 0.0025, 0.001, 0.00075, 0.0005, 0.00025, 0.0001, 7.5e-05, 5e-05, 2.5e-05, 1e-05, 1e-06, 1e-07, 1e-08, 1e-09, 1e-10]
y = x
xmin = min(x)
xmax = max(x)
ymin = min(y)
ymax = max(y)
# XTICKS
nbdiv = 5
xTicks = []
xticklabels = []
k = pow((xmin/xmax),1./(nbdiv-1.))
for i in range(0,nbdiv):
xTicks.append(xmax*pow(k,i))
printstr = '{:.2e}'.format(xmax*pow(k,i))
ls = printstr.split('e')
xticklabels.append((ls[0]+' x $10^{' +ls[1] + '}$'))
# PLOT
fig = plt.figure()
ax = plt.axes()
plt.loglog()
plt.minorticks_off()
plt.axis([xmin,xmax,ymin,ymax])
plt.xticks(xTicks)
path = ax.plot(x, y)
plt.savefig('test_working_4.png')
ax.set_xticklabels(xticklabels)
</code></pre>
<p><a href="https://i.stack.imgur.com/BAVpS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/BAVpS.png" alt="enter image description here"/></a></p>