【问题标题】:adding extra axis ticks using matplotlib使用 matplotlib 添加额外的轴刻度
【发布时间】:2013-02-05 20:51:29
【问题描述】:

我有一个简单的绘图代码

plt.plot(x,y)
plt.show()

我想在 x 轴上添加一些额外的刻度,而不是当前刻度,比如说在

extraticks=[2.1, 3, 7.6]

如您所见,我没有刻度模式,因此我不想增加整个轴的刻度频率;只保留原来的并添加那些额外的......

有可能吗?

问候

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    是的,您可以尝试以下方法:

    plt.xticks(list(plt.xticks()[0]) + extraticks)
    

    要使用的函数是xticks()。当不带参数调用时,它返回当前刻度。使用参数调用它,您可以设置刻度位置以及可选的标签。

    【讨论】:

    • +1 很好,简洁的答案。旁注:你不需要在那里打电话给sorted()。不过显然没什么大不了的。
    • 感谢@PaulH 的注释,出于某种原因,我认为它会更安全,但没有它也可以。已编辑。
    • 如何更改额外票的间距以避免与其他刻度重叠?
    【解决方案2】:

    为了完整起见,我想给出@Lev-Levitsky 的优秀答案的OO 版本:

    lines = plt.plot(x,y)
    ax = lines[0].axes
    ax.set_xticks(list(ax.get_xticks()) + extraticks)
    

    这里我们使用从plot返回的Lines2D序列中提取的Axes对象。通常,如果您使用的是 OO 接口,则您已经在前面引用了 Axes,并且您将调用 plot 而不是 pyplot

    角落警告

    如果由于某种原因您修改了轴限制(例如,通过编程方式放大数据的一部分),则需要在此操作后恢复它们:

    lim = ax.get_xlim()
    ax.set_xticks(list(ax.get_xticks()) + extraticks)
    ax.set_xlim(lim)
    

    否则,绘图将使 x 轴显示轴上所有可用的刻度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      相关资源
      最近更新 更多