0Pricing
Python Academy · Урок

Подграфики и компоновка

Объединяйте несколько диаграмм

«Подграфики и компоновка» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Зачем нужны несколько диаграмм

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

Основной инструмент — plt.subplots(rows, cols).

Сетка областей построения

fig, axes = plt.subplots(2, 3) создаёт рисунок с сеткой 2 на 3, то есть с шестью областями построения. Результат axes представляет собой двумерный массив, элементы которого индексируются как axes[0][1].

Общее число панелей равно произведению числа строк на число столбцов.

rows, cols = 2, 3
total = rows * cols
print('Grid', rows, 'x', cols, '=', total, 'axes')
for r in range(rows):
    for c in range(cols):
        print('panel at', (r, c))

Индексация массива областей построения

При одной строке axes является одномерным массивом: используйте axes[0], axes[1]. В полной сетке он является двумерным: axes[row][col].

Для одного подграфика индексация вообще не нужна.

Перебор панелей

Удобный шаблон — преобразовать сетку в плоскую последовательность и выполнить цикл, сопоставляя каждую область построения с её данными. Это позволяет не повторять почти одинаковый код для каждой панели.

datasets = ['A', 'B', 'C', 'D']
# imagine axes flattened to a list of 4
for i, name in enumerate(datasets):
    print('Plot dataset', name, 'on flat axes index', i)

Общие оси

Когда панели используют одну шкалу, передайте sharex=True или sharey=True. Тогда подграфики используют общий диапазон, что делает сравнение справедливым и устраняет повторяющиеся подписи делений.

Это особенно удобно для расположенных друг под другом временных рядов.

Размер рисунка для сеток

Для сетки требуется больше места, чем для одного графика. При вызове subplots задайте figsize=(width, height) в дюймах. Практическое правило — увеличивать размер пропорционально числу столбцов и строк.

cols, rows = 3, 2
per_panel_w, per_panel_h = 3, 2.5
print('Suggested figsize:', (cols * per_panel_w, rows * per_panel_h))

Расстояние между панелями

Панели могут располагаться слишком тесно. fig.tight_layout() автоматически исправляет большинство таких случаев. Для более точной настройки используйте fig.subplots_adjust(wspace=0.4, hspace=0.4), чтобы задать горизонтальные и вертикальные интервалы.

Большие значения означают больше места между подграфиками.

Неравномерные макеты с помощью GridSpec

Не каждый макет представляет собой равномерную сетку. GridSpec позволяет одной области построения занимать несколько строк или столбцов, например разместить широкую диаграмму сверху и две маленькие снизу.

Сначала задайте сетку, а затем выбирайте её части, как элементы массива, чтобы разместить каждую область построения.

Планирование занимаемых областей

Представляйте срезы GridSpec как диапазоны. Верхняя диаграмма, занимающая все столбцы, задаётся как gs[0, :], а нижняя левая диаграмма — как gs[1, 0]. Если сначала спланировать срезы на бумаге, это поможет избежать путаницы.

layout = {
    'header': '[0, :]   (full width)',
    'left':   '[1, 0]   (bottom left)',
    'right':  '[1, 1]   (bottom right)',
}
for name, slot in layout.items():
    print(name.ljust(7), slot)

Один рисунок — одна история

Рисунок с несколькими панелями всё равно должен рассказывать одну связную историю. Используйте общий fig.suptitle(), одинаковые цвета и общие шкалы, чтобы панели воспринимались как единое целое, а не как случайный набор.

Настройка отдельных панелей

Поскольку каждая ячейка является собственной областью построения, настраивайте их независимо. axes[0][0].set_title('Sales') задаёт заголовок только для верхней левой панели, а axes[1][1].set_ylabel('Cost') подписывает только нижнюю правую.

Именно эта независимость особенно хорошо показывает преимущества объектно-ориентированного стиля при работе с сетками.

Быстрая проверка

Проверьте, насколько хорошо вы поняли макеты с несколькими панелями.

Итоги

Теперь вы умеете объединять диаграммы:

  • plt.subplots(rows, cols) создаёт сетку областей построения
  • Индексируйте её с помощью axes[row][col] или преобразуйте в плоскую последовательность и выполните цикл
  • sharex/sharey выравнивают шкалы, а figsize задаёт размер сетки
  • tight_layout и subplots_adjust управляют интервалами
  • GridSpec позволяет создавать панели, занимающие несколько ячеек

Часто задаваемые вопросы

Урок «Подграфики и компоновка» бесплатный?

Да — полный текст урока «Подграфики и компоновка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Подграфики и компоновка»?

Объединяйте несколько диаграмм Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Подграфики и компоновка»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Фигуры и оси
  2. Графики линий, столбцов и рассеяния
  3. Настройка графиков
  4. Подграфики и компоновка
← Назад к Python Academy