Творческий 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()
без этого надпись "месяц" у верхнего графика теряется:
Более точное описание аргументов вы найдете на официальной странице.