【问题标题】:How to change log-scale tick labels in matplotlib [duplicate]如何更改 matplotlib 中的对数刻度刻度标签 [重复]
【发布时间】:2017-08-14 09:47:50
【问题描述】:

我正在尝试更改 matplotlib 中日志图的刻度标签,通过手动设置标签通常可以正常工作。但是,经常会出现如下所示的问题,手动移动标签似乎保留了一些旧标签。知道如何解决这个问题吗?

import matplotlib.pyplot as plt
%matplotlib inline

fig, ax = plt.subplots()
x = [1, 10]
y = [0, 1]
ax.plot(x, y)
ax.set_xscale('log')
ax.set_xlim(0, 10)

ax.set_xticks([2.5, 7.5])

另外,我最近升级到 matplotlib 2.0.2,我不记得以前见过这种行为。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    显示的值是次要刻度,要禁用它们,您可以声明:

    ax.minorticks_off()
    

    这将导致 7.5 的刻度标签也消失。

    您可能想要的是以下解决方案:

    from matplotlib.ticker import StrMethodFormatter, NullFormatter
    ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.1f}'))
    ax.xaxis.set_minor_formatter(NullFormatter())
    

    【讨论】:

    • 谢谢,这行得通!一个简短的后续问题 - 你如何将刻度标签显示为 10^{-1}、10^{-2} 以及如果可能的话 2\times 10^{-1}。 [把它想象成LaTeX,我不知道如何在stackoverflow上显示。]
    • ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.0E}')) 在 ofc 设置适当的 xticks 之后;在 answer 方法中,您将格式强制为小数点后 1 位浮点数;这将强制它为 0 十进制科学记数法。还有其他选项,但我相信您可以找到有关字符串格式的主题,这些主题可以在比我更短的时间内为您提供更多信息。 ;)
    • 我在寻找稍微不同的东西。基本上我想要一个格式化程序来显示带有实际指数的刻度标签,如我的问题所示。我发现matplotlib.ticker.LogFormatterMathtext 正是这样做的。不过,感谢您将我指向ticker 子包,这非常有帮助。
    • 啊,哎呀。我的误解很糟糕,但仍然很高兴你能找到你要找的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2020-03-29
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多