Творческий Pandas
С Pandas вам доступны все ключевые инструменты работы с графикой. При этом интерфейс гораздо проще, чем у родных функций и методов библиотеки Matplotlib. Рассмотрим это на примере.
Сгенерируем датафрейм с двумя колонками и нарисуем его, используя метод его plot:
import pandas as pd
import numpy as np
dates = pd.date_range(start='2021-01', periods=12, freq='M')
df = pd.DataFrame(data={'first':np.power(np.arange(12), 1.2),
'second':np.log(np.linspace(100, 100000, 12))}, index=dates)
df.plot(kind='line')
По умолчанию все столбцы рисуются на одном графике. Это может быть изменено заданием параметра subplots=True (тогда все будут на разных, если какая-то колонка вообще не нужна, вызываете метод plot на датафрейме без нее). Также в качестве подписи по оси x используется индекс (отменяется параметром use_index).
Заголовки и подписи осей
В целом почти все основные настройки задаются как параметры метода plot. Например, заголовок графика (title) и подписи осей (xlabel, ylabel):
df.plot(kind='line', subplots=True, title='Демонстрационный график', xlabel='месяц',
ylabel='количество')Для построения аналогичного графика с использованием Matplotlib понадобится примерно такой код:
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2,1, sharex=True)
for col, ax in zip(df.columns, axs.flatten()):
ax.plot(df.index, df[col])
ax.set_ylabel('количество')
ax.set_xlabel('месяц')
fig.suptitle('Демонстрационный график')Метки на осях
Задаются параметрами xticks и yticks. Подменим метки на оси x:
df.plot(kind='line', subplots=True, title='Демонстрационный график', xlabel='месяц',
ylabel='количество', use_index=False, xticks=np.arange(12)Задание пределов по осям
Задаются аргументами xlim и ylim:
df.plot(kind='line', subplots=True, title='Демонстрационный график', xlabel='месяц',
ylabel='количество', use_index=False, xticks=np.arange(12), ylim=[5,8])Слияние осей
Регулируется параметрами sharex, sharey. Так как по умолчанию значение оси x в нашем случае разделяется, для изменения этого установим sharex=False:
ax = df.plot(kind='line', sharex=False ,subplots=True, title='Демонстрационный график',
xlabel='месяц', ylabel='количество', use_index=False, xticks=np.arange(12))Если аргументов не хватает
В этом случае вы можете подстроить вывод путем получения доступа к объектам графиков (возвращаются методом plot) и рисунка (доступ через модуль matplotlib.pyplot):
Внимательные заметили, что из-за использования аргумента use_index=False вместе с прежними рисками пропала и надпись (несмотря на то, что среди аргументов она присутствует). Простой способ исправить ситуацию такой:
ax = df.plot(kind='line', sharex=False ,subplots=True, title='Демонстрационный график',
xlabel='месяц', ylabel='количество', use_index=False, xticks=np.arange(12))
ax[1].set_xticklabels(np.arange(12)-2)
ax[1].set_xlabel('надпись по оси х')Также я добавил строку ax[1].set_xticklabels(np.arange(12)-2) - так как среди аргументов не нашел возможности задать отдельно названия для рисок.
Необходимость обращения к методам модуля (через псевдоним plt) может возникнуть, например для задания размеров между графиками:
df.plot(kind='line', sharex=False ,subplots=True, title='Демонстрационный график',
xlabel='месяц', ylabel='количество')
plt.subplots_adjust(hspace=0.6, wspace=0.4)
# или plt.tight_layout()без этого надпись "месяц" у верхнего графика теряется:
Более точное описание аргументов вы найдете на официальной странице.