Evento de Rolagem no Matplotlib

Beginner

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

Introdução

Este laboratório irá guiá-lo através de um processo passo a passo de como usar o evento de rolagem (scroll event) no Matplotlib. O evento de rolagem pode ser usado para navegar pelas fatias 2D de dados 3D.

Dicas da VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Primeiramente, precisamos importar as bibliotecas necessárias, que incluem Matplotlib e NumPy.

import matplotlib.pyplot as plt
import numpy as np

Criar os dados

Criaremos dados 3D usando a função ogrid do NumPy.

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

Criar a classe IndexTracker

A classe IndexTracker irá rastrear o índice da fatia atual e atualizar o gráfico de acordo.

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()

Criar o gráfico e conectar o evento de rolagem

Criaremos o gráfico usando a função subplots do Matplotlib e passaremos o objeto IndexTracker criado para ele. Em seguida, conectaremos o evento de rolagem à tela da figura usando mpl_connect.

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

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

Resumo

Neste laboratório, aprendemos como usar o evento de rolagem no Matplotlib para navegar pelas fatias 2D de dados 3D. Criamos uma classe IndexTracker para rastrear o índice da fatia atual e atualizamos o gráfico de acordo. Finalmente, criamos o gráfico e conectamos o evento de rolagem à tela da figura.