防止 matplotlib.pyplot 中的科学记数法[重复]

Posted

技术标签:

【中文标题】防止 matplotlib.pyplot 中的科学记数法[重复]【英文标题】:prevent scientific notation in matplotlib.pyplot [duplicate] 【发布时间】:2015-04-06 22:39:05 【问题描述】:

我已经尝试在 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()

【问题讨论】:

【参考方案1】:

在您的情况下,您实际上想要禁用偏移量。使用科学记数法是与根据偏移值显示事物不同的设置。

但是,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()

如果您想同时禁用偏移量和科学记数法,您可以使用ax.ticklabel_format(useOffset=False, style='plain')


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

在 matplotlib 轴格式中,“科学记数法”指的是数字显示的乘数,而“偏移量”是一个单独的术语,添加。 p>

考虑这个例子:

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_format 方法(或plt.ticklabel_format)。

例如,如果我们调用:

ax.ticklabel_format(style='plain')

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

如果我们调用

ax.ticklabel_format(useOffset=False)

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

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

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

【讨论】:

可爱的答案。就我而言,我必须添加的一件事是axis='y' 调用的axis='y' 参数,因为我的x 轴是漂亮的日期,而我的y 轴是浮动的(试图关闭科学记数法时会抛出错误日期)。轴的默认值为axis='both' 我可能不明白为什么 style='plain' 不关闭科学记数法,除非与 useOffset=False 结合使用。至少在我的情况下,为了摆脱 matplotlib 有点武断的科学记数法选择,两者都是必需的:subplot.axes.ticklabel_format(style='plain', useOffset=False, axis='both') 这仅适用于分散格式化程序:-( 如果你得到AttributeError: This method only works with the ScalarFormatter,可能只有你的一个轴有问题(由于日期/时间轴,我遇到了这个问题。)尝试使用axis='y'指定要影响的轴。 @Toma 使用plt.tickalbel_format。如果没有进行任何更改,可能还有其他原因。

以上是关于防止 matplotlib.pyplot 中的科学记数法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

pyqtgraph 中的 matplotlib.pyplot.clim 对应项

python科学计算与数据可视化——Matplotlib

Python机器学习入门——科学计算库(Matplotlib)

详解 matplotlib.pyplot ,Python 初学者真能看懂

Matplotlib.pyplot 常用方法

按目标改进散点图的“matplotlib.pyplot”语法[重复]