Визуализация синусоидальных волн с использованием радиокнопок в Matplotlib

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

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

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

Введение

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

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

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

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

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

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек для этой лабораторной работы - numpy и matplotlib.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.widgets import RadioButtons

Создаем данные

Далее мы создадим данные, которые будут использоваться в графике. Мы создадим три разных синусоидальные волны с разными частотами с использованием библиотеки numpy.

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(8*np.pi*t)

Создаем график и радиокнопки

Теперь мы создадим график и радиокнопки. Мы будем использовать функцию subplots() для создания графика и функцию RadioButtons() для создания радиокнопок.

fig, ax = plt.subplots()
l, = ax.plot(t, s0, lw=2, color='red')
fig.subplots_adjust(left=0.3)

axcolor = 'lightgoldenrodyellow'
rax = fig.add_axes([0.05, 0.7, 0.15, 0.15], facecolor=axcolor)
radio = RadioButtons(rax, ('1 Hz', '2 Hz', '4 Hz'),
                     label_props={'color': 'cmy', 'fontsize': [12, 14, 16]},
                     radio_props={'s': [16, 32, 64]})

Добавляем функциональность к радиокнопкам

Теперь мы добавим функциональность к радиокнопкам с использованием функции on_clicked(). Мы определим две функции - hzfunc() и colorfunc() - которые будут вызываться при нажатии на радиокнопки.

def hzfunc(label):
    hzdict = {'1 Hz': s0, '2 Hz': s1, '4 Hz': s2}
    ydata = hzdict[label]
    l.set_ydata(ydata)
    fig.canvas.draw()
radio.on_clicked(hzfunc)

rax = fig.add_axes([0.05, 0.4, 0.15, 0.15], facecolor=axcolor)
radio2 = RadioButtons(
    rax, ('red', 'blue', 'green'),
    label_props={'color': ['red', 'blue', 'green']},
    radio_props={
        'facecolor': ['red', 'blue', 'green'],
        'edgecolor': ['darkred', 'darkblue', 'darkgreen'],
    })


def colorfunc(label):
    l.set_color(label)
    fig.canvas.draw()
radio2.on_clicked(colorfunc)

rax = fig.add_axes([0.05, 0.1, 0.15, 0.15], facecolor=axcolor)
radio3 = RadioButtons(rax, ('-', '--', '-.', ':'))


def stylefunc(label):
    l.set_linestyle(label)
    fig.canvas.draw()
radio3.on_clicked(stylefunc)

Отображаем график

Наконец, мы отобразим график с использованием функции show().

plt.show()

Резюме

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