Событие прокрутки в Matplotlib

Beginner

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

Введение

В этом практическом занятии вы пройдете пошаговый процесс по использованию события прокрутки в Matplotlib. Событие прокрутки можно использовать для навигации по 2D срезам 3D данных.

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

После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки, в том числе Matplotlib и NumPy.

import matplotlib.pyplot as plt
import numpy as np

Создаем данные

Мы создадим 3D-данные с использованием функции ogrid из NumPy.

x, y, z = np.ogrid[-10:10:100j, -10:10:100j, 1:10:20j]
X = np.sin(x * y * z) / (x * y * z)

Создаем класс IndexTracker

Класс IndexTracker будет отслеживать текущий индекс среза и обновлять график в соответствии с ним.

class IndexTracker:
    def __init__(self, ax, X):
        self.index = 0
        self.X = X
        self.ax = ax
        self.im = ax.imshow(self.X[:, :, self.index])
        self.update()

    def on_scroll(self, event):
        increment = 1 if event.button == 'up' else -1
        max_index = self.X.shape[-1] - 1
        self.index = np.clip(self.index + increment, 0, max_index)
        self.update()

    def update(self):
        self.im.set_data(self.X[:, :, self.index])
        self.ax.set_title(
            f'Use scroll wheel to navigate\nindex {self.index}')
        self.im.axes.figure.canvas.draw()

Создаем график и подключаем событие прокрутки

Мы создадим график с использованием функции subplots из Matplotlib и передадим созданный объект IndexTracker в него. Затем мы подключим событие прокрутки к полотну фигуры с использованием mpl_connect.

fig, ax = plt.subplots()
tracker = IndexTracker(ax, X)

fig.canvas.mpl_connect('scroll_event', tracker.on_scroll)
plt.show()

Резюме

В этом практическом занятии мы узнали, как использовать событие прокрутки в Matplotlib для навигации по 2D-сечениям 3D-данных. Мы создали класс IndexTracker, чтобы отслеживать текущий индекс среза и обновлять график в соответствии с ним. Наконец, мы создали график и подключили событие прокрутки к полотну фигуры.