【问题标题】:prevent scientific notation in matplotlib.pyplot [duplicate]防止 matplotlib.pyplot 中的科学记数法[重复]
【发布时间】:2022-01-19 00:12:28
【问题描述】:

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

【问题讨论】:

    标签: python matplotlib


    【解决方案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。如果没有进行任何更改,可能还有其他原因。
    猜你喜欢
    • 2022-10-10
    相关资源
    最近更新 更多