Создать ползунки для синусоидальной волны с использованием Matplotlib

MatplotlibMatplotlibBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом уроке мы узнаем, как создавать ползунки и использовать их для управления частотой и амплитудой синусоидальной волны. Мы будем использовать библиотеку Matplotlib для создания графика синусоидальной волны и ползунков. Ползунки позволят нам настраивать частоту и амплитуду синусоидальной волны.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Первым шагом является импорт необходимых библиотек. Мы будем использовать Matplotlib и NumPy.

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

Определение функции синусоидальной волны

Далее мы определим функцию, которая будет генерировать нашу синусоидальную волну. Функция будет принимать два параметра: амплитуду и частоту, и возвращать синусоидальную волну в заданный момент времени.

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

Создание начального графика

Теперь мы создадим начальный график синусоидальной волны. Мы определим начальные параметры для амплитуды и частоты и построим синусоидальную волну с использованием этих параметров.

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]')

Создание ползунков

Теперь мы создадим ползунки, которые позволят нам настраивать частоту и амплитуду синусоидальной волны. Мы создадим горизонтальный ползунок для управления частотой и вертикальный ползунок для управления амплитудой.

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"
)

Создание функции обновления

Теперь мы создадим функцию, которая будет обновлять синусоидальную волну каждый раз, когда мы настраиваем ползунки. Функция будет принимать значения ползунков амплитуды и частоты и обновлять синусоидальную волну в соответствии с ними.

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

Зарегистрировать функцию обновления с ползунками

Далее мы зарегистрируем функцию обновления с каждым ползунком, чтобы функция вызывалась каждый раз, когда мы настраиваем ползунки.

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

Создание кнопки сброса

Теперь мы создадим кнопку сброса, которая сбросит ползунки к их начальным значениям.

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)

Показать график

Наконец, мы покажем график с ползунками и кнопкой сброса.

plt.show()

Резюме

В этом уроке мы узнали, как создавать ползунки и использовать их для управления частотой и амплитудой синусоидальной волны. Мы использовали библиотеку Matplotlib для создания графика синусоидальной волны и ползунков. Мы создали горизонтальный ползунок для управления частотой и вертикальный ползунок для управления амплитудой. Мы также создали кнопку сброса, которая сбрасывает ползунки к их начальным значениям.