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