Использование флажков в Matplotlib

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

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

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

Введение

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

Советы по использованию ВМ

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

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

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

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

Начнем с импорта необходимых библиотек. Для генерации данных нам нужна numpy, а для создания графика - matplotlib.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import CheckButtons

Генерация данных

Далее мы сгенерируем данные для нашего графика. Мы создадим три синусоид с разными частотами с использованием 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(6*np.pi*t)

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

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

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2, color='black', label='1 Hz')
l1, = ax.plot(t, s1, lw=2, color='red', label='2 Hz')
l2, = ax.plot(t, s2, lw=2, color='green', label='3 Hz')
fig.subplots_adjust(left=0.2)

Добавление флажков

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

lines_by_label = {l.get_label(): l for l in [l0, l1, l2]}
line_colors = [l.get_color() for l in lines_by_label.values()]

rax = fig.add_axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(
    ax=rax,
    labels=lines_by_label.keys(),
    actives=[l.get_visible() for l in lines_by_label.values()],
    label_props={'color': line_colors},
    frame_props={'edgecolor': line_colors},
    check_props={'facecolor': line_colors},
)

Определение функции обратного вызова

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

def callback(label):
    ln = lines_by_label[label]
    ln.set_visible(not ln.get_visible())
    ln.figure.canvas.draw_idle()

check.on_clicked(callback)

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

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

plt.show()

Резюме

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