在matplotlib中用"X"代替"e"科学记数法显示数字

Dav*_*PNY 10 python matplotlib

使用matplotlib,我想在我的图上写文字,以正常的科学记数法显示,例如,1.92x10 -7而不是默认的1.92e-7.我已经找到了如何为轴上的数字标记刻度而不是文本功能的帮助.以下是我想要更改的代码示例:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,0.5)
y = x*(1.0-x)

a=1.92e-7

plt.figure()
plt.plot(x, y)
plt.text(0.01, 0.23, r"$a = {0:0.2e}$".format(a), size=20)
plt.show()
Run Code Online (Sandbox Code Playgroud)

xnx*_*xnx 11

这样做的一种稍微晦涩的方法是从Python字符串表示中为数字构建自己的tex字符串.通过as_si,定义如下,你的数字和小数位数,它将产生这个tex字符串:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,0.5)
y = x*(1.0-x)

def as_si(x, ndp):
    s = '{x:0.{ndp:d}e}'.format(x=x, ndp=ndp)
    m, e = s.split('e')
    return r'{m:s}\times 10^{{{e:d}}}'.format(m=m, e=int(e))

a=1.92e-7

plt.figure()
plt.plot(x, y)

plt.text(0.01, 0.23, r"$a = {0:s}$".format(as_si(a,2)), size=20)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述