Создание совместных субплотов из DataFrames в Pandas

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для отображения нескольких датафреймов на сетке субплотов при помощи библиотеки matplotlib, можно воспользоваться методом subplots() и в цикле отобразить каждый датафрейм на соответствующей ему оси (ax). Предположим, что dfs — это список DataFrame, от каждого из которых необходимо показать столбец 'A':

Python
Скопировать код
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=len(dfs), figsize=(10, 5))
for ax, df in zip(axes, dfs):
    df['A'].plot(ax=ax)
plt.tight_layout()
plt.show()

Данный код обеспечивает генерацию субплотов для каждого датафрейма, размещая их аккуратно друг под другом. Параметр nrows определяется длиной списка dfs и задаёт вертикальное расположение субплотов.

Кинга Идем в IT: пошаговый план для смены профессии

Усовершенствование подхода к субплотам

Выравнивание масштабов осей:

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

Python
Скопировать код
fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
for i, df in enumerate(dfs):
    ax = axes[i//2, i%2]
    df.plot(ax=ax)

Динамическое определение расположения субплотов:

Если количество датафреймов подвержено изменениям, более рациональным решением станет использование динамического расположения субплотов. Расчётное количество субплотов определяется как округлённый квадратный корень от числа датафреймов:

Python
Скопировать код
import math

n = len(dfs)
grid_size = math.ceil(math.sqrt(n))
fig, axes = plt.subplots(nrows=grid_size, ncols=grid_size, figsize=(10, 8))

for i, ax in enumerate(axes.flatten()):
    if i < n:
        dfs[i].plot(ax=ax)

Визуализация

Представим каждый датафрейм как отдельную страницу фотоальбома с уникальной темой:

Markdown
Скопировать код
Фотоальбом (📚): [Страница 1 (🏖), Страница 2 (🎉), Страница 3 (🗻)]

Таким образом, субплоты matplotlib могут быть сравнены с изображениями, каждое из которых иллюстрирует уникальный датафрейм:

Python
Скопировать код
fig, axes = plt.subplots(nrows=3, ncols=1)
df1.plot(ax=axes[0])  # Страница 1 – датафрейм солнечного дня
df2.plot(ax=axes[1])  # Страница 2 – датафрейм вечеринки
df3.plot(ax=axes[2])  # Страница 3 – датафрейм приключений

Такие субплоты позволяют:

  • Сравнивать данные, наблюдая их вместе.
  • Выводить на поверхность скрытые закономерности между наборами данных.
  • Поддерживать графики в организованном и приятном для восприятия виде.

Полезные материалы

  1. Документация pandas DataFrame 2.2.0 — основы работы с DataFrame в pandas.
  2. Документация matplotlib.pyplot.subplots 3.8.2 — руководство по созданию субплотов с использованием matplotlib.
  3. Гайд по визуализации в Python с Matplotlib – Real Python — детальное руководство по работе с matplotlib.
  4. Создание субплотов при помощи plt.subplots — документация Matplotlib 3.8.2 — дополнительные советы по работе с субплотами в matplotlib.
  5. Визуализация графиков — документация pandas 2.2.0 – секреты и тонкости визуализации данных в pandas.

Завершение

Путь к мастерству в создании диаграмм лежит через упорную практику. Экспериментируйте и вскоре вы увидите, насколько полезным может стать plt.tight_layout(). Наберитесь терпения, стремитесь к порядку в данных и двигайтесь вперёд к новым открытиям в мире программирования!