Python преобразовать день года в месяц на оси - PullRequest
0 голосов
/ 09 января 2019

У меня есть временной ряд, который я хотел бы изобразить год за годом. Я хочу, чтобы данные были ежедневными, но ось каждый месяц будет отображаться как "январь", "февраль" и т. Д.

В настоящий момент я могу получить дневные данные, НО ось 1-366 (день года).

Или я могу получить месячную ось как 1, 2, 3 и т. Д. (Изменив индекс на df.index.month), НО тогда данные будут ежемесячными.

Как преобразовать ось дня года в месяцы? Или как я могу это сделать?

Код, показывающий дневные данные, но ось неверна:

# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='31-12-2018', freq='D')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by day in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.dayofyear, columns=df.index.year, values='Data')
df_pivot.plot()
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()

graph result with the axis of 0, 50, 100, 150 etc - showing the day number not month as Jan, Feb, Mar etc

1 Ответ

0 голосов
/ 09 января 2019

Это можно сделать с помощью функции xticks . Просто добавьте следующий код перед plt.show():

plt.xticks(np.linspace(0,365,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))

Или следующее, чтобы названия месяцев появлялись в середине месяца:

plt.xticks(np.linspace(15,380,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...