Prevent scientific notation

几个小时以来我一直在试图抑制皮普洛特的科学记数法。在尝试了多种解决方案都没有成功之后,我希望得到一些帮助。

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

Is ticklabel_format broken? does not resolve the issue of actually removing the offset.

plt.plot(np.arange(1e6, 3 * 1e7, 1e6))
plt.ticklabel_format(useOffset=False)

enter image description here

163820 次浏览

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

However, ax.ticklabel_format(useOffset=False) should have worked (though you've listed it as one of the things that didn't).

例如:

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

If you want to disable both the offset and scientific notaion, you'd use ax.ticklabel_format(useOffset=False, style='plain').


“偏移量”和“科学记数法”的区别

In matplotlib axis formatting, "scientific notation" refers to a 乘数 for the numbers show, while the "offset" is a separate term that is added.

考虑一下这个例子:

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