Решение проблемы с поворотом даты в matplotlib
Быстрый ответ
Повернуть деления с датами на графиках в Matplotlib можно, воспользовавшись функцией autofmt_xdate()
для быстрых корректировок, или же аргументом rotation
при использовании функции plt.xticks()
, если требуется конкретный угол поворота. Ваш код может выглядеть так:
import matplotlib.pyplot as plt
# ...[код построения графика]...
plt.gcf().autofmt_xdate() # Быстрое поворачивание меток
# Или: plt.xticks(rotation=45) # Для задания конкретного угла поворота
plt.show()
Функция autofmt_xdate()
автоматически наклоняет метки. Аргумент rotation
в plt.xticks()
позволяет настроить угол наклона меток по вашему усмотрению. Воспользуйтесь подходящим для вас инструментом!
Как совершить поворот без происшествий
Для более стабильного поворота
Простой совет: примените setp()
, чтобы определить и зафиксировать пользовательский угол поворота. Почему это хорошо? Потому что это надежно и добавляет прецизности в управление графиками на Python:
ax = plt.gca() # Получаем текущую ось
plt.setp(ax.get_xticklabels(), rotation=45, ha="right") # Поворачиваем и выравниваем метки по горизонтали
Приручаем plt.gca()
Функция plt.gca()
удобна, но имеет свои нюансы при работе с несколькими осями:
fig, axs = plt.subplots(2, 1)
plt.setp(axs[0].xaxis.get_majorticklabels(), rotation=45) # Поворачиваем метки первой оси
Получаем правильные оси без путаницы
Чтобы избежать ошибок, рекомендуется установить метки времени до назначения самих меток:
ax.set_xticklabels(xlabels, rotation=45) # Сначала задаём поворот
Минимизируем путаницу для максимальной пользы
Избегаем наложения меток
После поворота меток, убедитесь, что они не накладываются друг на друга и остаются читаемы:
ax.tick_params(axis='x', pad=15) # Увеличиваем пространство между делениями
Деления: независимость и уверенность
Объектно-ориентированный подход позволяет сделать работу более надежной:
ax.xaxis.set_tick_params(rotation=45) # Устанавливаем параметры делений индивидуально
Авто-Деления: Преобразуем ваши графики с датами
Для визуализации временных графиков активизируйте AutoDateLocator и AutoDateFormatter:
from matplotlib.dates import AutoDateLocator, AutoDateFormatter
ax.xaxis.set_major_locator(AutoDateLocator())
ax.xaxis.set_major_formatter(AutoDateFormatter(AutoDateLocator()))
Визуализация
Даты как деления на оси времени в Python:
12/01 03/01
10/01 02/01
| 🔄 |
09/01 03/01
| |
08/01 04/01
06/01 12/01
Каждая дата отмечена делением. Поверните их для улучшения видимости.
Ваши графики станут еще лучше
Найдите баланс
Подбор корректного угла поворота меток способствует комфорту в чтении графика:
plt.setp(ax.get_xticklabels(), rotation=20) # Умеренное наклонение меток улучшает читаемость
Просторный график — счастливый график
Обеспечьте дополнительное пространство в вашем графике, настроив компоновку подграфиков:
plt.subplots_adjust(bottom=0.2) # Освобождаем место в нижней части
Точное выравнивание делений
Доводите выравнивание делений до детальности:
from matplotlib.ticker import MaxNLocator
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
Полезные материалы
- matplotlib.dates — Документация Matplotlib — официальное руководство по работе с датами.
- Временные ряды / функциональность дат — Документация pandas — расширяем способности pandas для работы с временем.
- datetime — Основные типы данных для работы с датой и временем — Документация Python — введение в функционал работы с датами и временем в Python.
- Расположение делений — Документация Matplotlib 3.1.2 — регулирование интервалов между делениями на вашем графике.
- matplotlib.axes — Документация Matplotlib — подробные советы по управлению осями в Matplotlib.