Любой способ улучшить вывод текущего временного ряда в python? - PullRequest
0 голосов
/ 23 января 2020

Мне удалось манипулировать данными построения, чтобы отобразить соответствующий график временных рядов. Но я не совсем удовлетворен текущим выводом, потому что не так просто понять вновь сгенерированный график.

мои текущие данные и мой вывод :

вот мой данные выглядят так:

enter image description here

обновление

вот мой эскизный код, который сформировал данные графика:

df=df.groupby(['date'])['qty1'].sum().reset_index()
df['year'] = pd.DatetimeIndex(df['date']).year
df['month'] = pd.DatetimeIndex(df['date']).month
plot_data=df.groupby(['year', 'month'])['qty1'].sum().unstack().fillna(0)

plot_data.plot(kind='line')

и на основании этих данных я получаю этот график:

enter image description here

, но это не то, чего я ожидал.

желаемый участок :

Вот график, который мне действительно нужен:

enter image description here

Я не получил этот сюжет. Как я могу получить это? есть идеи?

1 Ответ

0 голосов
/ 23 января 2020

Это то, что вы ищете?

import pandas as pd
import matplotlib.pyplot as plt
import calendar
%matplotlib inline

df = pd.DataFrame(dic) #dic is the dictionary you provided in the github link
df.columns = [str(i) for i in range(1,13)]
df = df.T
df.columns = ['2014','2015','2016','2017','2018']
df['Avg'] = df.mean(axis =1)

fig,ax = plt.subplots(figsize = (15,7))
plt.plot(df.index,df['2016'], marker='s',color = 'green', linewidth = 1, label="2016")
plt.plot(df.index,df['2017'],"bo-", linewidth = 1.5, label="2017")
plt.plot(df.index,df['2018'],  marker='s', ms =10, color = 'red', linewidth = 3, label="2018")
plt.plot(df.index,df['Avg'],  "--", color = 'grey', linewidth = 8, label="5-Yr-Avg")

plt.xlabel('\n Months\n', fontsize = 25, color = 'lightslategrey')

plt.legend(frameon = False, loc = "lower center", ncol=len(df.columns), fontsize = 14)
plt.grid(axis='y')
ax.set_xticklabels([calendar.month_abbr[i] for i in range(1,13)])


plt.tick_params( left = False, labelsize= 13)
ax.spines['left'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)



plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...