如何在Python matplotlib图中防止数字变为指数形式

如何在Python matplotlib图中防止数字变为指数形式,python,graph,matplotlib,figure,Python,Graph,Matplotlib,Figure,我在Python中使用Matplotlib来绘制简单的x-y数据集。这会生成漂亮的图形,尽管当我使用图形视图(在执行plt.show()时出现)对绘制图形的各个部分“放大”过近时,x轴值会从标准数字形式(1050、1060、1070等)更改为指数表示法的科学形式(例如,x轴标签为+1.057e3的1、1.5、2.0) 我希望我的图形保留轴的简单编号,而不是使用指数形式。有什么方法可以强制Matplotlib这样做吗?勾号标签的格式由格式化程序对象控制,假设您没有做任何事,它将是ScalePerf

我在Python中使用Matplotlib来绘制简单的x-y数据集。这会生成漂亮的图形,尽管当我使用图形视图(在执行
plt.show()
时出现)对绘制图形的各个部分“放大”过近时,x轴值会从标准数字形式(1050、1060、1070等)更改为指数表示法的科学形式(例如,x轴标签为
+1.057e3
的1、1.5、2.0)


我希望我的图形保留轴的简单编号,而不是使用指数形式。有什么方法可以强制Matplotlib这样做吗?

勾号标签的格式由
格式化程序
对象控制,假设您没有做任何事,它将是
ScalePerformatter
。此格式化程序将如果可见值的分数变化非常小,请使用常量偏移。要避免此情况,只需将其关闭:

plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
plt.ticklabel_format(useOffset=False)
如果你想避免一般的科学记数法

ax.get_xaxis().get_major_formatter().set_scientific(False)

可以通过axes.formatter.useoffset
rcparam对其进行全局控制。

您可以使用以下方法:

from matplotlib.ticker import ScalarFormatter, FormatStrFormatter

ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))

可以使用更简单的命令将其关闭:

plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
plt.ticklabel_format(useOffset=False)
使用以下命令:
ax.ticklabel\u格式(useOffset=False,style='plain')

如果使用子批,您可能会遇到
AttributeError:此方法仅适用于ScalarFormatter
,在这种情况下,您将添加
axis='y'
,如下所示。您可以将“y”更改为有问题的轴

ax1.ticklabel_format(useOffset=False, style='plain', axis='y')

源问题和答案。请注意,
轴“y”的命令使用隐藏在答案注释中。

我在图表之前使用了下面的代码,它对我来说是无缝的

plt.ticklabel_format(style='plain')

确切地说,我不希望在放大时显示科学数字,以下内容在我的案例中也起到了作用。我使用Lat/Lon来标记科学形式没有意义的地方

plt.ticklabel\u格式(useOffset=False)

Thank的复本,很好用。对于重复的问题,我也表示歉意-我在发布之前确实搜索过,但我的搜索包括“科学记数法”和“指数形式”等术语,而不是“相对轴移动”,这是前一个用户使用的。有没有办法永久性地强制进行此更改?我从未找到科学符号轴,并且总是将其关闭。但是我看不到用于此的rcParam。@IanRoberts请参阅更新它是
轴。格式化程序。useoffset
rcparamGreat,谢谢!我个人更喜欢将此设置为False默认情况下,因为它似乎混淆了许多人,只对少数人有利。没错,这是一个很好的观点。这是一个相当未经证实的说法,尽管我已经看到很多人问如何禁用它。无论如何,这个修复很好地解决了它,所以我现在可以忘记它…Cheers这是唯一对我有效的解决方案,同时使用日志轴。其他选项s我尝试了所有引发的属性错误,例如,
AttributeError:'LogFormatterScinonotation'对象没有属性'set\u scientific'