Matplotlib scalarformatter未将y记号转换为标准格式

Matplotlib scalarformatter未将y记号转换为标准格式,matplotlib,Matplotlib,我试图使用ScalarFormatter将y轴刻度转换为标准形式,但经过多次实验,我没有成功,我也不知道为什么。MWE: import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import scipy.constants as const k = 1/(4*np.pi*const.epsilon_0) def force_e(q_1,q_2,x): return k*q_1*q_2/x**

我试图使用ScalarFormatter将y轴刻度转换为标准形式,但经过多次实验,我没有成功,我也不知道为什么。MWE:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import scipy.constants as const

k = 1/(4*np.pi*const.epsilon_0)
def force_e(q_1,q_2,x):
    return k*q_1*q_2/x**2

d = 10
delta = 0.1*d
x = np.linspace(0+delta,d-delta,1000)
q1 = 2e-6
q2 = -2e-6
q = 1e-9
F = force_e(q1,q,x) - force_e(q2,q,d-x)

fig,ax1 = plt.subplots(1, figsize=(6,6))

ax1.plot(x, F)
ax1.yaxis.set_major_formatter(mpl.ticker.ScalarFormatter(useMathText=True))

ax1.set_xlabel("Separation $r$ (m)")
ax1.set_ylabel("Force $F$ (N)")
plt.tight_layout()
plt.show()
它生成的图形如下所示:


其中,我希望它显示1.75x10^5等。

删除设置格式化程序的行,并将其替换为
ax1.ticklabel\u格式(scilimits=(-2,2),useMathText=True)
。删除设置格式化程序的行,并将其替换为
ax1.ticklabel\u格式(scilimits=(-2,2),useMathText=True)