Введение
Радиокнопки - это тип элемента ввода, который позволяет пользователям выбирать один вариант из группы предварительно определенных вариантов. В этом лабораторном занятии мы будем использовать библиотеку 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. Мы использовали радиокнопки, чтобы пользователь мог выбирать между разными синусоидальными волнами, которые будут отображаться на графике. Мы также добавили функциональность к радиокнопкам, определив функции, которые вызываются при нажатии на кнопки. В целом, это практическое занятие показало, как радиокнопки могут быть использованы для создания интерактивных визуализаций, которые позволяют пользователям исследовать разные аспекты данных.