Введение
В этом практическом занятии вы научитесь использовать вложенные .GridSpec в Matplotlib для создания сетки подграфиков различного размера. Это полезно, когда вы хотите создать сложный макет графиков и контролировать размер и расстояние между каждым графиком.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт библиотек
Сначала нам нужно импортировать необходимые библиотеки. Мы будем использовать matplotlib.pyplot для создания графиков и numpy для генерации некоторых данных для построения.
import matplotlib.pyplot as plt
import numpy as np
Создание данных
В этом шаге мы создадим некоторые данные для построения. Мы будем использовать функцию squiggle_xy для генерации некоторых синусоидальных и косинусоидальных волн с разными частотами.
def squiggle_xy(a, b, c, d):
i = np.arange(0.0, 2*np.pi, 0.05)
return np.sin(i*a)*np.cos(i*b), np.sin(i*c)*np.cos(i*d)
Создание фигуры и внешней сетки
Далее мы создадим фигуру и внешнюю сетку с использованием функции add_gridspec. Мы создадим 4x4 сетку без расстояния между подграфиками.
fig = plt.figure(figsize=(8, 8))
outer_grid = fig.add_gridspec(4, 4, wspace=0, hspace=0)
Создание внутренних сеток и подграфиков
В этом шаге мы создадим внутренние сетки и подграфики с использованием вложенных .GridSpec. Мы пройдемся по каждой ячейке в внешней сетке и создадим для каждой ячейки 3x3 сетку.
for a in range(4):
for b in range(4):
## gridspec внутри gridspec
inner_grid = outer_grid[a, b].subgridspec(3, 3, wspace=0, hspace=0)
axs = inner_grid.subplots() ## Создаем все подграфики для внутренней сетки.
for (c, d), ax in np.ndenumerate(axs):
ax.plot(*squiggle_xy(a + 1, b + 1, c + 1, d + 1))
ax.set(xticks=[], yticks=[])
Показать только внешние контуры
В этом шаге мы удалим контуры для внутренних подграфиков и покажем только внешние контуры. Это сделает график выглядеть чище.
for ax in fig.get_axes():
ss = ax.get_subplotspec()
ax.spines.top.set_visible(ss.is_first_row())
ax.spines.bottom.set_visible(ss.is_last_row())
ax.spines.left.set_visible(ss.is_first_col())
ax.spines.right.set_visible(ss.is_last_col())
Показать график
Наконец, мы покажем график с использованием функции show().
plt.show()
Резюме
В этом практическом занятии вы узнали, как использовать вложенные .GridSpec в Matplotlib для создания сетки подграфиков различного размера. Мы также узнали, как генерировать данные с использованием numpy и как настраивать контуры подграфиков. С этими знаниями вы можете создавать сложные макеты графиков с точным контролем над их размером и расстоянием между ними.