在 Matplotlib 中设置替代光标

Beginner

This tutorial is from open-source community. Access the source code

简介

本实验将指导你如何使用 Matplotlib 在图形画布上设置替代光标。替代光标可以是 Matplotlib 后端工具中任何可用的光标。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入必要的库

首先,我们需要导入所需的库。我们将使用 matplotlib.pyplotmatplotlib.backend_tools

import matplotlib.pyplot as plt
from matplotlib.backend_tools import Cursors

创建图形并设置替代光标

接下来,我们创建一个图形,并使用循环为每个子图设置替代光标。我们还在每个子图中添加文本,以指示正在使用的光标。

fig, axs = plt.subplots(len(Cursors), figsize=(6, len(Cursors) + 0.5), gridspec_kw={'hspace': 0})
fig.suptitle('Hover over an Axes to see alternate Cursors')

for cursor, ax in zip(Cursors, axs):
    ax.cursor_to_use = cursor
    ax.text(0.5, 0.5, cursor.name,
            horizontalalignment='center', verticalalignment='center')
    ax.set(xticks=[], yticks=[])

悬停时设置光标

当用户将鼠标悬停在子图上时,我们需要将光标设置为替代光标。我们通过 motion_notify_event 事件和 set_cursor() 函数来实现这一点。

def hover(event):
    if fig.canvas.widgetlock.locked():
        ## 如果缩放/平移工具已启用,则不执行任何操作。
        return

    fig.canvas.set_cursor(
        event.inaxes.cursor_to_use if event.inaxes else Cursors.POINTER)

fig.canvas.mpl_connect('motion_notify_event', hover)

显示图形

最后,我们使用 show() 函数显示图形。

plt.show()

总结

在本实验中,我们学习了如何使用 Matplotlib 在图形画布上设置替代光标。我们创建了一个图形,并为每个子图设置了替代光标,然后在用户将鼠标悬停在子图上时将光标设置为替代光标。然后我们显示了该图形。