Criar uma GUI Simples com Onda Senoidal Matplotlib

Beginner

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

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.