防止matplotlib.pyplot中的科学记数法

时间:2015-02-06 17:44:23

标签: python matplotlib

我一直试图在pyplot中压制科学记数法几个小时了。在尝试多种解决方案但没有成功之后,我想要一些帮助。

plt.plot(range(2003,2012,1),range(200300,201200,100))
# several solutions from other questions have not worked, including
# plt.ticklabel_format(style='sci', axis='x', scilimits=(-1000000,1000000))
# ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.show()

plot

提前致谢。

1 个答案:

答案 0 :(得分:64)

在您的情况下,您实际上想要禁用偏移量。使用科学记数法是一个单独的设置,不能用偏移值显示事物。

然而,ax.ticklabel_format(useOffset=False)应该有效(尽管您已将其列为没有做过的事情之一)。

例如:

fig, ax = plt.subplots()
ax.plot(range(2003,2012,1),range(200300,201200,100))
ax.ticklabel_format(useOffset=False)
plt.show()

enter image description here

如果要同时禁用偏移和科学注释,请使用ax.ticklabel_format(useOffset=False, style='plain')


"偏移"之间的差异和"科学记数法"

在matplotlib轴格式化中,"科学记数法"是指数字显示的乘数,而"偏移"是添加的单独术语

考虑这个例子:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1000, 1001, 100)
y = np.linspace(1e-9, 1e9, 100)

fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

x轴将具有偏移(注意+符号),y轴将使用科学记数法(作为乘数 - 无加号)。

enter image description here

我们可以单独禁用其中一个。最方便的方法是ax.ticklabel_format方法(或plt.ticklabel_format)。

例如,如果我们打电话:

ax.ticklabel_format(style='plain')

我们将在y轴上禁用科学记数法:

enter image description here

如果我们打电话

ax.ticklabel_format(useOffset=False)

我们将禁用x轴上的偏移,但保持y轴科学记数不变:

enter image description here

最后,我们可以通过以下方式禁用它们:

ax.ticklabel_format(useOffset=False, style='plain')

enter image description here