Matplotlib 事件处理教程

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验是一个循序渐进的教程,介绍如何在 Python Matplotlib 中,将一个窗口中的事件(例如鼠标按下)连接到另一个图形窗口。

虚拟机使用提示

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

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

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

设置环境

首先,我们需要设置 Python 环境并导入必要的库。

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

figsrc, axsrc = plt.subplots(figsize=(3.7, 3.7))
figzoom, axzoom = plt.subplots(figsize=(3.7, 3.7))
axsrc.set(xlim=(0, 1), ylim=(0, 1), autoscale_on=False,
          title='Click to zoom')
axzoom.set(xlim=(0.45, 0.55), ylim=(0.4, 0.6), autoscale_on=False,
           title='Zoom window')

x, y, s, c = np.random.rand(4, 200)
s *= 200

axsrc.scatter(x, y, s, c)
axzoom.scatter(x, y, s, c)

定义 on_press 函数

接下来,我们定义一个名为 on_press 的函数,该函数将根据在第一个窗口中鼠标点击的位置来调整第二个窗口的 x 和 y 轴范围。

def on_press(event):
    if event.button!= 1:
        return
    x, y = event.xdata, event.ydata
    axzoom.set_xlim(x - 0.1, x + 0.1)
    axzoom.set_ylim(y - 0.1, y + 0.1)
    figzoom.canvas.draw()

将事件与函数连接

现在,我们将第一个窗口中的鼠标按下事件与我们刚刚定义的 on_press 函数连接起来。

figsrc.canvas.mpl_connect('button_press_event', on_press)

显示绘图

最后,我们将绘图展示给用户。

plt.show()

总结

在这个实验中,我们学习了如何在 Python 的 Matplotlib 中,将一个窗口中的事件(例如鼠标按下)与另一个图形窗口进行连接。我们还学习了如何定义一个函数,以便根据在第一个窗口中鼠标点击的位置来调整第二个窗口的范围,以及如何将鼠标按下事件与这个函数进行连接。