Introdução
Neste laboratório, você aprenderá como criar uma GUI simples usando o widget Button do Matplotlib. A GUI permitirá que você modifique uma onda senoidal alterando a frequência usando os botões Next e Previous.
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 as bibliotecas necessárias
Primeiro, vamos importar as bibliotecas necessárias, incluindo matplotlib.pyplot, numpy e Button de matplotlib.widgets.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button
Configurar o gráfico inicial
Em seguida, configuraremos o gráfico inicial. Criaremos uma onda senoidal com uma frequência de 2 Hz usando a função arange do numpy e a plotaremos usando a função plot do matplotlib.pyplot.
freqs = np.arange(2, 20, 3)
fig, ax = plt.subplots()
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*freqs[0]*t)
l, = ax.plot(t, s, lw=2)
Criar as funções de callback do botão
Agora, criaremos duas funções de callback para os botões Next e Previous. Essas funções atualizarão o gráfico com uma nova onda senoidal com uma frequência diferente.
class Index:
ind = 0
def next(self, event):
self.ind += 1
i = self.ind % len(freqs)
ydata = np.sin(2*np.pi*freqs[i]*t)
l.set_ydata(ydata)
plt.draw()
def prev(self, event):
self.ind -= 1
i = self.ind % len(freqs)
ydata = np.sin(2*np.pi*freqs[i]*t)
l.set_ydata(ydata)
plt.draw()
callback = Index()
Criar os botões Next e Previous
Agora, criaremos os botões Next e Previous usando a função add_axes do matplotlib.pyplot e atribuiremos as funções de callback que criamos anteriormente a eles usando on_clicked.
axprev = fig.add_axes([0.7, 0.05, 0.1, 0.075])
axnext = fig.add_axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
Exibir o gráfico
Finalmente, exibiremos o gráfico usando a função show do matplotlib.pyplot.
plt.show()
Resumo
Neste laboratório, você aprendeu como criar uma GUI (Graphical User Interface - Interface Gráfica do Usuário) simples usando o widget Button do Matplotlib. Você aprendeu como modificar uma onda senoidal alterando a frequência usando os botões Next e Previous.