【问题标题】:Matplotlib mouse cursor coordinates not shown for empty tick labelsMatplotlib 鼠标光标坐标未显示空刻度标签
【发布时间】:2020-12-07 20:06:05
【问题描述】:

matplotlib 中,交互式绘图窗口在左下角显示鼠标光标绘图坐标。

import matplotlib.pyplot as plt

plt.ion()
ax = plt.gca()

但是,假设我想隐藏(不一定删除)y 轴上的刻度标签,例如通过

ax.set_yticklabels([])

刻度标签消失了,但鼠标光标绘图坐标不再显示在 y 轴上。另一种隐藏 y 轴的方法是

ax.tick_params(labelleft=False)

这会保留鼠标光标坐标。空的刻度标签列表如何“破坏”坐标信息?我假设预期的行为是刻度标签不会更改底层绘图坐标,无论指定它们(imshow's extentplt.plot 的 x 数组等)。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    工具栏上的坐标格式化程序由当前的 Axes 格式化程序确定。默认情况下,在设置yticklabels 之前,即为ticker.ScalarFormatter 实例。当您运行ax.set_yticklabels([]) 时,格式化程序被设置为ticker.FixedFormatter 实例,在这种情况下,它显然被定制为为任何输入值返回一个空字符串(这样您就不会得到任何刻度标签)。

    您可以通过将ax.format_coord 设置为根据您的需要格式化坐标的函数来恢复工具栏的原始功能。例如:

    ax.format_coord = lambda x, y: 'x={:g}, y={:g}'.format(x, y)
    

    举个小例子:

    import matplotlib.pyplot as plt
    plt.ion()
    fig, ax = plt.subplots()
    ax.set_yticklabels([])
    ax.format_coord = lambda x, y: 'x={:g}, y={:g}'.format(x, y)
    

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 2021-11-17
      • 2013-06-22
      • 2020-03-27
      相关资源
      最近更新 更多