Как отметить начало нового года при построении серии pandas?
Я рисую такие данные:
import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates import pandas as pd a = pd.DatetimeIndex(start='2010-01-01',end='2011-06-01' , freq='M') b = pd.Series(np.random.randn(len(a)), index=a)
Я хотел бы, чтобы сюжет был в формате баров, поэтому я использую это:
b.plot(kind='bar')
Это то, что я получаю:
Как видите, даты отформатированы полностью, что очень уродливо и нечитаемо. Мне довелось проверить эту команду, которая создает очень хороший формат даты:
b.plot()
Как вы видете:
Мне очень нравится этот формат, он включает в себя месяцы, отмечает начало года и легко читается.
После того, как вы выполнили поиск, ближайший доступ к этому формату можно использовать следующим образом:
fig, ax = plt.subplots() ax.plot(b.index, b) ax.xaxis.set_major_formatter(mdates.DateFormatter('%b'))
Однако вывод выглядит следующим образом:
Я могу иметь месячные имена по оси x таким образом, но мне больше нравится первое форматирование. Это намного более элегантно. Кто-нибудь знает, как я могу получить те же самые точные знаки для моего бара?
- Рабочий пример детектирования и корреляции аномалии люминола по Linkedin
- Временные ряды Pandas DataFrame Отсутствующие значения
- Как я могу просто рассчитать скользящую / движущуюся дисперсию таймсерий в python?
- Ошибка памяти при построении временных рядов в кадре данных панд
- Matplotlib удаляет интерполяцию для отсутствующих данных
Вот решение, которое даст вам формат, который вы ищете. Вы можете напрямую редактировать метки меток и использовать set_major_formatter()
:
fig, ax = plt.subplots() ax.bar(b.index, b) ticklabels = [item.strftime('%b') for item in b.index] #['']*len(b.index) ticklabels[::12] = [item.strftime('%b\n%Y') for item in b.index[::12]] ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter(ticklabels)) ax.set_xticks(b.index) plt.gcf().autofmt_xdate()
Вывод:
- Распознавание изображений на Python – доступ к набору данных
- NoReverseMatch, reverse для входа не найдена ошибка
- Изменение временной частоты в Pandas Dataframe
- Как сделать date_range в обратном порядке?
- Продление сроков использования Pandas
- Группируйте, затем примените функцию, затем сгладьте обратно в dataframe в Pandas Python
- Прогнозирование ARIMA в цикле Python
- Повторная выборка и нормализация нерегулярных временных рядов данных в пандах
- Удалить интерполяцию График временных рядов для отсутствующих значений
- В Python-Pandas, как я могу подмножить фрейм данных с помощью определенных значений индекса datetime?
- Python – отстающие регрессии во временных рядах