Создание совместных субплотов из DataFrames в Pandas
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для отображения нескольких датафреймов на сетке субплотов при помощи библиотеки matplotlib, можно воспользоваться методом subplots()
и в цикле отобразить каждый датафрейм на соответствующей ему оси (ax
). Предположим, что dfs
— это список DataFrame, от каждого из которых необходимо показать столбец 'A':
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
и задаёт вертикальное расположение субплотов.
Усовершенствование подхода к субплотам
Выравнивание масштабов осей:
Поклонникам симметрии matplotlib предлагает решение в виде параметров sharex=True
и sharey=True
, которые позволяют добиться одинаковости осей и улучшить сравнение данных на разнородных графиках.
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)
Динамическое определение расположения субплотов:
Если количество датафреймов подвержено изменениям, более рациональным решением станет использование динамического расположения субплотов. Расчётное количество субплотов определяется как округлённый квадратный корень от числа датафреймов:
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)
Визуализация
Представим каждый датафрейм как отдельную страницу фотоальбома с уникальной темой:
Фотоальбом (📚): [Страница 1 (🏖), Страница 2 (🎉), Страница 3 (🗻)]
Таким образом, субплоты matplotlib могут быть сравнены с изображениями, каждое из которых иллюстрирует уникальный датафрейм:
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 – датафрейм приключений
Такие субплоты позволяют:
- Сравнивать данные, наблюдая их вместе.
- Выводить на поверхность скрытые закономерности между наборами данных.
- Поддерживать графики в организованном и приятном для восприятия виде.
Полезные материалы
- Документация pandas DataFrame 2.2.0 — основы работы с DataFrame в pandas.
- Документация matplotlib.pyplot.subplots 3.8.2 — руководство по созданию субплотов с использованием matplotlib.
- Гайд по визуализации в Python с Matplotlib – Real Python — детальное руководство по работе с matplotlib.
- Создание субплотов при помощи plt.subplots — документация Matplotlib 3.8.2 — дополнительные советы по работе с субплотами в matplotlib.
- Визуализация графиков — документация pandas 2.2.0 – секреты и тонкости визуализации данных в pandas.
Завершение
Путь к мастерству в создании диаграмм лежит через упорную практику. Экспериментируйте и вскоре вы увидите, насколько полезным может стать plt.tight_layout()
. Наберитесь терпения, стремитесь к порядку в данных и двигайтесь вперёд к новым открытиям в мире программирования!