防止 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)