Учебник по обработке событий в Matplotlib

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Этот практикум представляет собой пошаговое руководство по подключению событий в одном окне, например, нажатия мыши, к другому окну с графиком в Python Matplotlib.

Советы по работе с ВМ

После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к 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)

Настройка среды

Во - первых, нам нужно настроить среду Python и импортировать необходимые библиотеки.

import matplotlib.pyplot as plt
import numpy as np

## Зафиксируем случайное состояние для воспроизводимости
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, которая будет настраивать пределы z и 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. Мы также узнали, как определить функцию для настройки пределов второго окна в зависимости от положения клика мыши в первом окне, и как подключить событие нажатия кнопки к этой функции.