Tutorial de Alternância de Legendas no Matplotlib

Beginner

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

Introdução

Neste laboratório, aprenderemos como habilitar a seleção na legenda para alternar a linha original ligada e desligada usando Python Matplotlib.

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 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 são NumPy e Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Preparar os Dados

Geraremos duas ondas senoidais com diferentes frequências usando NumPy.

t = np.linspace(0, 1)
y1 = 2 * np.sin(2*np.pi*t)
y2 = 4 * np.sin(2*np.pi*2*t)

Criar Figura e Eixos

Criaremos uma figura e eixos usando Matplotlib e definiremos o título do gráfico.

fig, ax = plt.subplots()
ax.set_title('Click on legend line to toggle line on/off')

Criar Linhas e Legenda

Criaremos duas linhas e uma legenda usando Matplotlib.

line1, = ax.plot(t, y1, lw=2, label='1 Hz')
line2, = ax.plot(t, y2, lw=2, label='2 Hz')
leg = ax.legend(fancybox=True, shadow=True)

Mapear Linhas da Legenda para as Linhas Originais

Mapearemos as linhas da legenda para as linhas originais usando um dicionário.

lines = [line1, line2]
lined = {}  ## Will map legend lines to original lines.
for legline, origline in zip(leg.get_lines(), lines):
    legline.set_picker(True)  ## Enable picking on the legend line.
    lined[legline] = origline

Definir a Função de Evento 'On Pick'

Definiremos a função de evento 'on pick' que alternará a visibilidade da linha original correspondente à linha proxy da legenda.

def on_pick(event):
    ## On the pick event, find the original line corresponding to the legend
    ## proxy line, and toggle its visibility.
    legline = event.artist
    origline = lined[legline]
    visible = not origline.get_visible()
    origline.set_visible(visible)
    ## Change the alpha on the line in the legend, so we can see what lines
    ## have been toggled.
    legline.set_alpha(1.0 if visible else 0.2)
    fig.canvas.draw()

Conectar a Função de Evento 'On Pick' ao Canvas

Conectaremos a função de evento 'on pick' ao canvas.

fig.canvas.mpl_connect('pick_event', on_pick)

Mostrar o Gráfico

Mostraremos o gráfico usando Matplotlib.

plt.show()

Resumo

Neste laboratório, aprendemos como habilitar a seleção (picking) na legenda para alternar a linha original ligada e desligada usando Python Matplotlib. Criamos uma figura e eixos, preparamos dados, criamos linhas e legenda, mapeamos as linhas da legenda para as linhas originais, definimos a função de evento 'on pick', conectamos a função de evento 'on pick' ao canvas e mostramos o gráfico.