【问题标题】:How can I label the minor tics in a loglog plot in matplotlib? [duplicate]如何在 matplotlib 的日志图中标记轻微抽动? [复制]
【发布时间】:2013-05-30 07:39:40
【问题描述】:

我正在使用带有 matplotlib.pyplot 的对数图,其 x 轴仅在几个数量级上变化。仅标记了主要抽动,x 轴看起来非常稀疏且有点不清楚。我怎样才能同时标记轻微抽动?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您想在次要刻度标签上添加什么?如果你只是想让你的轴看起来更活泼一点,你可以

    import numpy as np
    from matplotlib.ticker import LogLocator, FormatStrFormatter
    
    # display 5 minor ticks between each major tick
    minorLocator = LogLocator(subs=np.linspace(2,10,6,endpoint=False))
    # format the labels (if they're the x values)
    majorFormatter = FormatStrFormatter('%5.4f')
    
    # for no labels use default NullFormatter
    ax.xaxis.set_minor_locator(minorLocator)
    
    # or if you want to see some constrained floats 
    # this may make things busy!
    ax.xaxis.set_minor_formatter(minorFormatter)
    

    【讨论】:

    • MultipleLocator 是其参数的每个倍数的定位器,因此在这种情况下,刻度将是 0,5,10,15,20,25,...,即不是五个次要刻度在每个主要刻度之间。
    • @nordev 谢谢,已更正。
    • 这似乎也没有给出正确的结果。您已将参数 subs 指定为参数 [1.0],这意味着次要刻度将仅显示 101 * 1、102 * 1、10**3 * 1 等在。 numticks 参数试图在轴上拟合与其参数一样多的刻度线(至少看起来是这样),在本例中为 5。这两个参数都阻止了所需的输出。您只需调用LogLocator(subs=np.linspace(2,10,6,endpoint=False)) 即可在每个主要标记之间获得五个次要标记。
    【解决方案2】:

    我会这样做:

    plt.xticks([1, 3, 10, 30, 100, 300], [1, 3, 10, 30, 100, 300])
    

    您可能应该将它放在一个方便的函数中,该函数获取当前轴限制并生成适当的刻度序列和刻度标签。

    matplotlib 中可能有一个“Ticker”对象,它会做这样的事情。不幸的是,日志图上的文档非常稀少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 2011-10-11
      • 2021-04-04
      • 2021-10-13
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 2014-01-18
      相关资源
      最近更新 更多