05 June 2020

Даты на графиках matplotlib

Даты янляются одним из хитрых типов данных в языках программирования, которые требуют специальной обработки.
При построении графиков также хочется чтобы график был читаемым и в нем не было избыточности и, как следствие, наложение подписей осей друг на друга.
Чтобы вывести даты этим способом по оси абсцисс в matplotlib приходится "шаманить" - т.е. вызывать дополнительные функции.
В простом случае надо получить доступ к осям - это делает метод gca() или Get Current Axes.
Далее получаем доступ к оси абсцисс xaxis и уже у нее вызываем методы настройки. В моем случае, поскольку данные по короновирусу ограничены только этим годом, то нет смысл выводить год и на нем можно сократить.
Код:

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

...

# определяем форматирование - день и месяц через тире
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter("%d-%m"))

# ставим интервал в 15 дней между штрихами ( ticks ) в 15 дней
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=15))


# применяем форматирование
plt.gcf().autofmt_xdate()




После этого график по оси абсцисс подписан как нам надо - только месяц и день.

No comments:

Post a Comment