Usando Botões de Seleção no Matplotlib

Beginner

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

Introdução

Este laboratório demonstrará como usar botões de seleção (check buttons) em Python Matplotlib. Botões de seleção permitem que os usuários liguem e desliguem elementos visuais com botões de seleção, de forma semelhante às caixas de seleção (check boxes). Usaremos a função CheckButtons para criar um gráfico com três diferentes ondas senoidais e a capacidade de escolher quais ondas são exibidas com os botões de seleção.

Dicas para a 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 às limitações do 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 Bibliotecas

Começaremos importando as bibliotecas necessárias. Precisamos de numpy para gerar os dados e matplotlib para criar o gráfico.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import CheckButtons

Gerar Dados

Em seguida, geraremos os dados para o nosso gráfico. Criaremos três ondas senoidais com diferentes frequências usando numpy.

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)

Criar o Gráfico

Agora, criaremos o gráfico usando matplotlib. Plotaremos as três ondas senoidais no mesmo gráfico e definiremos a visibilidade da primeira onda como False, pois queremos começar com ela oculta.

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2, color='black', label='1 Hz')
l1, = ax.plot(t, s1, lw=2, color='red', label='2 Hz')
l2, = ax.plot(t, s2, lw=2, color='green', label='3 Hz')
fig.subplots_adjust(left=0.2)

Adicionar Botões de Seleção (Check Buttons)

Agora, adicionaremos os botões de seleção ao nosso gráfico usando a função CheckButtons. Passaremos as linhas plotadas como rótulos e definiremos a visibilidade inicial de cada linha. Também ajustaremos as propriedades dos botões de seleção para corresponder às cores das linhas plotadas.

lines_by_label = {l.get_label(): l for l in [l0, l1, l2]}
line_colors = [l.get_color() for l in lines_by_label.values()]

rax = fig.add_axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(
    ax=rax,
    labels=lines_by_label.keys(),
    actives=[l.get_visible() for l in lines_by_label.values()],
    label_props={'color': line_colors},
    frame_props={'edgecolor': line_colors},
    check_props={'facecolor': line_colors},
)

Definir Função de Callback

Precisamos definir uma função de callback para os botões de seleção. Esta função será chamada toda vez que um botão de seleção for clicado. Usaremos esta função para alternar a visibilidade da linha correspondente no gráfico.

def callback(label):
    ln = lines_by_label[label]
    ln.set_visible(not ln.get_visible())
    ln.figure.canvas.draw_idle()

check.on_clicked(callback)

Exibir o Gráfico

Finalmente, exibiremos o gráfico usando a função show().

plt.show()

Resumo

Neste laboratório, aprendemos como usar botões de seleção (check buttons) em Python Matplotlib. Criamos um gráfico com três diferentes ondas senoidais e a capacidade de escolher quais ondas são exibidas com os botões de seleção. Usamos a função CheckButtons para criar os botões e definimos uma função de callback para alternar a visibilidade da linha correspondente no gráfico.