Решение проблемы с поворотом даты в matplotlib

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Повернуть деления с датами на графиках в Matplotlib можно, воспользовавшись функцией autofmt_xdate() для быстрых корректировок, или же аргументом rotation при использовании функции plt.xticks(), если требуется конкретный угол поворота. Ваш код может выглядеть так:

Python
Скопировать код
import matplotlib.pyplot as plt
# ...[код построения графика]...

plt.gcf().autofmt_xdate()  # Быстрое поворачивание меток
# Или: plt.xticks(rotation=45)  # Для задания конкретного угла поворота
plt.show()

Функция autofmt_xdate() автоматически наклоняет метки. Аргумент rotation в plt.xticks() позволяет настроить угол наклона меток по вашему усмотрению. Воспользуйтесь подходящим для вас инструментом!

Кинга Идем в IT: пошаговый план для смены профессии

Как совершить поворот без происшествий

Для более стабильного поворота

Простой совет: примените setp(), чтобы определить и зафиксировать пользовательский угол поворота. Почему это хорошо? Потому что это надежно и добавляет прецизности в управление графиками на Python:

Python
Скопировать код
ax = plt.gca()  # Получаем текущую ось
plt.setp(ax.get_xticklabels(), rotation=45, ha="right")  # Поворачиваем и выравниваем метки по горизонтали

Приручаем plt.gca()

Функция plt.gca() удобна, но имеет свои нюансы при работе с несколькими осями:

Python
Скопировать код
fig, axs = plt.subplots(2, 1)
plt.setp(axs[0].xaxis.get_majorticklabels(), rotation=45)  # Поворачиваем метки первой оси

Получаем правильные оси без путаницы

Чтобы избежать ошибок, рекомендуется установить метки времени до назначения самих меток:

Python
Скопировать код
ax.set_xticklabels(xlabels, rotation=45) # Сначала задаём поворот

Минимизируем путаницу для максимальной пользы

Избегаем наложения меток

После поворота меток, убедитесь, что они не накладываются друг на друга и остаются читаемы:

Python
Скопировать код
ax.tick_params(axis='x', pad=15)  # Увеличиваем пространство между делениями

Деления: независимость и уверенность

Объектно-ориентированный подход позволяет сделать работу более надежной:

Python
Скопировать код
ax.xaxis.set_tick_params(rotation=45) # Устанавливаем параметры делений индивидуально

Авто-Деления: Преобразуем ваши графики с датами

Для визуализации временных графиков активизируйте AutoDateLocator и AutoDateFormatter:

Python
Скопировать код
from matplotlib.dates import AutoDateLocator, AutoDateFormatter

ax.xaxis.set_major_locator(AutoDateLocator())
ax.xaxis.set_major_formatter(AutoDateFormatter(AutoDateLocator()))

Визуализация

Даты как деления на оси времени в Python:

Markdown
Скопировать код
   12/01      03/01
10/01     02/01
   |  🔄    |
09/01     03/01
   |        |
08/01     04/01
   06/01      12/01

Каждая дата отмечена делением. Поверните их для улучшения видимости.

Ваши графики станут еще лучше

Найдите баланс

Подбор корректного угла поворота меток способствует комфорту в чтении графика:

Python
Скопировать код
plt.setp(ax.get_xticklabels(), rotation=20)  # Умеренное наклонение меток улучшает читаемость

Просторный график — счастливый график

Обеспечьте дополнительное пространство в вашем графике, настроив компоновку подграфиков:

Python
Скопировать код
plt.subplots_adjust(bottom=0.2)  # Освобождаем место в нижней части

Точное выравнивание делений

Доводите выравнивание делений до детальности:

Python
Скопировать код
from matplotlib.ticker import MaxNLocator

ax.xaxis.set_major_locator(MaxNLocator(integer=True))

Полезные материалы

  1. matplotlib.dates — Документация Matplotlib — официальное руководство по работе с датами.
  2. Временные ряды / функциональность дат — Документация pandas — расширяем способности pandas для работы с временем.
  3. datetime — Основные типы данных для работы с датой и временем — Документация Python — введение в функционал работы с датами и временем в Python.
  4. Расположение делений — Документация Matplotlib 3.1.2 — регулирование интервалов между делениями на вашем графике.
  5. matplotlib.axes — Документация Matplotlib — подробные советы по управлению осями в Matplotlib.