Matplotlib Span Selector

PythonPythonBeginner

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

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

Введение

В этом практическом занятии вы научитесь использовать Matplotlib Span Selector для выбора диапазона на оси и построения детального представления выбранного диапазона на другой оси.

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

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

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

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

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

Сначала нам нужно импортировать необходимые библиотеки — numpy и matplotlib.

import numpy as np
import matplotlib.pyplot as plt

Создаем примерные данные

Теперь мы создадим некоторые примерные данные для построения с использованием numpy.

## Fixing random state for reproducibility
np.random.seed(19680801)

x = np.arange(0.0, 5.0, 0.01)
y = np.sin(2 * np.pi * x) + 0.5 * np.random.randn(len(x))

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

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

fig, (ax1, ax2) = plt.subplots(2, figsize=(8, 6))

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

Мы построим примерные данные на первом подграфике.

ax1.plot(x, y)
ax1.set_ylim(-2, 2)
ax1.set_title('Press left mouse button and drag '
              'to select a region in the top graph')

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

Мы определим функцию обратного вызова, которая будет вызываться при выборе диапазона с использованием Span Selector.

def onselect(xmin, xmax):
    indmin, indmax = np.searchsorted(x, (xmin, xmax))
    indmax = min(len(x) - 1, indmax)

    region_x = x[indmin:indmax]
    region_y = y[indmin:indmax]

    if len(region_x) >= 2:
        line2.set_data(region_x, region_y)
        ax2.set_xlim(region_x[0], region_x[-1])
        ax2.set_ylim(region_y.min(), region_y.max())
        fig.canvas.draw_idle()

Создаем Span Selector

Мы создадим объект Span Selector с использованием matplotlib.widgets.SpanSelector.

span = SpanSelector(
    ax1,
    onselect,
    "horizontal",
    useblit=True,
    props=dict(alpha=0.5, facecolor="tab:blue"),
    interactive=True,
    drag_from_anywhere=True
)

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

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

line2, = ax2.plot([], [])

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

Теперь мы покажем график с использованием matplotlib.pyplot.show().

plt.show()

Резюме

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