Построение графиков с датой в Matplotlib

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы научимся создавать графики с датой с использованием Matplotlib в Python. Мы будем использовать модуль matplotlib.dates для преобразования объектов datetime в внутреннее представление Matplotlib. Также мы узнаем, как форматировать метки делений по оси x для отображения дат в читаемом формате.

Советы по работе с ВМ

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

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек, в том числе matplotlib.pyplot, matplotlib.cbook и matplotlib.dates.

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates

Загружаем данные

Далее мы загрузим данные, которые хотим отобразить. Мы будем использовать массив записей numpy из данных csv Yahoo с полями date, open, high, low, close, volume, adj_close из директории mpl-data/sample_data. В массиве записей дата хранится в виде np.datetime64 с единицей измерения день ('D') в столбце date.

data = cbook.get_sample_data('goog.npz')['price_data']

Создаем подграфики

Мы создадим три подграфика, чтобы показать разные варианты форматирования меток делений.

fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), layout='constrained')

Строим график данных

Мы построим график данных на всех трех подграфиках с использованием функции plot.

for ax in axs:
    ax.plot('date', 'adj_close', data=data)
    ax.grid(True)
    ax.set_ylabel(r'Цена [\$]')

Форматируем метки делений с использованием стандартного форматтера

Мы будем форматировать метки делений на первом подграфике с использованием стандартного форматтера.

ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())

Форматируем метки делений с использованием компактного форматтера

Мы будем форматировать метки делений на втором подграфике с использованием компактного форматтера.

ax = axs[1]
ax.set_title('ConciseFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))

Вручную форматируем метки делений

Мы вручную отформатируем метки делений на третьем подграфике с использованием DateFormatter для форматирования дат с использованием строк формата, описанных в datetime.date.strftime.

ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
for label in ax.get_xticklabels(which='major'):
    label.set(rotation=30, horizontalalignment='right')

Отображаем график

Наконец, мы отобразим график с использованием функции show.

plt.show()

Резюме

В этом практическом занятии мы узнали, как создавать графики с датами с использованием Matplotlib в Python. Мы использовали модуль matplotlib.dates для преобразования объектов datetime в внутреннее представление Matplotlib. Мы также узнали, как форматировать метки делений по оси x для отображения дат в читаемом формате.