Criar Sliders de Onda Senoidal com Matplotlib

Beginner

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

Introdução

Neste tutorial, aprenderemos como criar sliders (controles deslizantes) e usá-los para controlar a frequência e a amplitude de uma onda senoidal. Usaremos a biblioteca Matplotlib para criar um gráfico da onda senoidal e dos sliders. Os sliders nos permitirão ajustar a frequência e a amplitude da onda senoidal.

Dicas para a VM (Máquina Virtual)

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 Bibliotecas

O primeiro passo é importar as bibliotecas necessárias. Usaremos Matplotlib e NumPy.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button, Slider

Definir a Função da Onda Senoidal

Em seguida, definiremos a função que gerará nossa onda senoidal. A função receberá dois parâmetros, amplitude e frequência, e retornará a onda senoidal em um determinado tempo.

def f(t, amplitude, frequency):
    return amplitude * np.sin(2 * np.pi * frequency * t)

Criar o Gráfico Inicial

Agora, criaremos o gráfico inicial da onda senoidal. Definiremos os parâmetros iniciais para a amplitude e frequência e plotaremos a onda senoidal usando esses parâmetros.

t = np.linspace(0, 1, 1000)
init_amplitude = 5
init_frequency = 3

fig, ax = plt.subplots()
line, = ax.plot(t, f(t, init_amplitude, init_frequency), lw=2)
ax.set_xlabel('Time [s]')

Criar os Sliders (Barras Deslizantes)

Agora criaremos os sliders (barras deslizantes) que nos permitirão ajustar a frequência e a amplitude da onda senoidal. Criaremos um slider horizontal para controlar a frequência e um slider vertical para controlar a amplitude.

fig.subplots_adjust(left=0.25, bottom=0.25)
axfreq = fig.add_axes([0.25, 0.1, 0.65, 0.03])
freq_slider = Slider(
    ax=axfreq,
    label='Frequency [Hz]',
    valmin=0.1,
    valmax=30,
    valinit=init_frequency,
)

axamp = fig.add_axes([0.1, 0.25, 0.0225, 0.63])
amp_slider = Slider(
    ax=axamp,
    label="Amplitude",
    valmin=0,
    valmax=10,
    valinit=init_amplitude,
    orientation="vertical"
)

Criar a Função de Atualização

Agora criaremos a função que atualizará a onda senoidal toda vez que ajustarmos os sliders. A função receberá os valores dos sliders de amplitude e frequência e atualizará a onda senoidal de acordo.

def update(val):
    line.set_ydata(f(t, amp_slider.val, freq_slider.val))
    fig.canvas.draw_idle()

Registrar a Função de Atualização com os Sliders

Em seguida, registraremos a função de atualização com cada slider para que a função seja chamada toda vez que ajustarmos os sliders.

freq_slider.on_changed(update)
amp_slider.on_changed(update)

Criar o Botão de Reset

Agora criaremos um botão de reset que irá redefinir os sliders para seus valores iniciais.

resetax = fig.add_axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', hovercolor='0.975')

def reset(event):
    freq_slider.reset()
    amp_slider.reset()
button.on_clicked(reset)

Mostrar o Gráfico

Finalmente, mostraremos o gráfico com os sliders e o botão de reset.

plt.show()

Resumo

Neste tutorial, aprendemos como criar sliders e usá-los para controlar a frequência e a amplitude de uma onda senoidal. Usamos a biblioteca Matplotlib para criar um gráfico da onda senoidal e os sliders. Criamos um slider horizontal para controlar a frequência e um slider vertical para controlar a amplitude. Também criamos um botão de reset que redefine os sliders para seus valores iniciais.