Руководство по переключению легенды в Matplotlib

Beginner

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

Введение

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

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

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

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

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

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

Сначала нам нужно импортировать необходимые библиотеки, это NumPy и Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Подготовка данных

Мы сгенерируем две синусоидальные волны с разными частотами с использованием NumPy.

t = np.linspace(0, 1)
y1 = 2 * np.sin(2*np.pi*t)
y2 = 4 * np.sin(2*np.pi*2*t)

Создаем фигуру и оси

Мы создадим фигуру и оси с использованием Matplotlib и зададим заголовок графика.

fig, ax = plt.subplots()
ax.set_title('Click on legend line to toggle line on/off')

Создаем линии и легенду

Мы создадим две линии и легенду с использованием Matplotlib.

line1, = ax.plot(t, y1, lw=2, label='1 Hz')
line2, = ax.plot(t, y2, lw=2, label='2 Hz')
leg = ax.legend(fancybox=True, shadow=True)

Отображаем линии легенды на исходные линии

Мы сопоставим линии легенды с исходными линиями с использованием словаря.

lines = [line1, line2]
lined = {}  ## Будет сопоставлять линии легенды с исходными линиями.
for legline, origline in zip(leg.get_lines(), lines):
    legline.set_picker(True)  ## Включает выделение по линии легенды.
    lined[legline] = origline

Определяем функцию для события выбора

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

def on_pick(event):
    ## При событии выбора найти исходную линию, соответствующую линии-заместителю легенды,
    ## и переключить ее видимость.
    legline = event.artist
    origline = lined[legline]
    visible = not origline.get_visible()
    origline.set_visible(visible)
    ## Изменить альфа-значение линии в легенде, чтобы мы могли видеть, какие линии
    ## были переключены.
    legline.set_alpha(1.0 if visible else 0.2)
    fig.canvas.draw()

Подключаем функцию для события выбора к холсту

Мы подключим функцию для события выбора к холсту.

fig.canvas.mpl_connect('pick_event', on_pick)

Показываем график

Мы покажем график с использованием Matplotlib.

plt.show()

Резюме

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