Python 防止matplotlib.pyplot中使用科学符号

Python 防止matplotlib.pyplot中使用科学符号,python,matplotlib,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)

几个小时以来,我一直试图在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()

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

但是,
ax.ticklabel\u格式(usecoffset=False)
应该是有效的(尽管您已经将其列为无效的内容之一)

例如:

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

如果要同时禁用偏移量和科学符号,可以使用
ax.ticklabel\u格式(usecoffset=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轴将使用科学记数法(作为乘数——无加号)

我们可以分别禁用其中一个。最方便的方法是
ax.ticklabel\u格式
方法(或
plt.ticklabel\u格式

例如,如果我们调用:

ax.ticklabel_format(style='plain')
我们将禁用y轴上的科学符号:

如果我们打电话

ax.ticklabel_format(useOffset=False)
我们将禁用x轴上的偏移,但保持y轴科学符号不变:

最后,我们可以通过以下方式禁用这两种功能:

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

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

但是,
ax.ticklabel\u格式(usecoffset=False)
应该是有效的(尽管您已经将其列为无效的内容之一)

例如:

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

如果要同时禁用偏移量和科学符号,可以使用
ax.ticklabel\u格式(usecoffset=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轴将使用科学记数法(作为乘数——无加号)

我们可以分别禁用其中一个。最方便的方法是
ax.ticklabel\u格式
方法(或
plt.ticklabel\u格式

例如,如果我们调用:

ax.ticklabel_format(style='plain')
我们将禁用y轴上的科学符号:

如果我们打电话

ax.ticklabel_format(useOffset=False)
我们将禁用x轴上的偏移,但保持y轴科学符号不变:

最后,我们可以通过以下方式禁用这两种功能:

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

回答得很好。在我的例子中,我必须添加一个
axis='y'
参数到
ax.ticklabel\u format
调用中,因为我的x轴是漂亮的日期,y轴是浮动的(试图关闭日期的科学记数法时出错)。axis的默认值是
axis='both'
。我可能不明白为什么
style='plain'
不关闭科学记数法,除非与
usecoffset=False
结合使用。至少在我的例子中,这两种格式都是必需的,以便摆脱matplotlib中有些武断的科学符号选择:
subplot.axes.ticklab_格式(style='plain',useOffset=False,axis='both')
这只适用于散点格式设置器:-(如果您获得
AttributeError:此方法仅适用于ScalarFormatter
,则只有一个轴可能存在问题(我遇到此问题是由于日期/时间轴)。请尝试指定要使用
axis='y'
影响的轴。如何将其实现到正常plt。图()?我尝试使用这个方法,虽然没有错误,但它没有改变我的绘图。回答很好。在我的例子中,我必须添加一个
axis='y'
参数到
ax.ticklab_format
调用中,因为我的x轴是漂亮的日期,而我的y轴是浮动的(它试图关闭日期的科学记数法,这是在抛出错误)。axis的默认值是
axis='both'
。我可能不明白为什么
style='plain'
不关闭科学记数法,除非与
usecoffset=False
结合使用。至少在我的情况下,这两个选项都是必需的,以便摆脱matplotlib中有些随意的科学记数法选择:
subplot.axis.ticklabel_格式(style='plain',useOffset=False,axis='both')
这只适用于分散格式设置程序:-(如果您获得
AttributeError:此方法只适用于ScalarFormatter
,则只有一个轴可能有问题(我遇到此问题是由于日期/时间轴)尝试使用
axis='y'
指定要影响的轴。如何将其实现到正常plt。figure()?我尝试使用此方法,虽然没有错误,但它在绘图中没有改变任何内容。