Python: построение годового сравнения накопленного оборота в виде линейного графика. - PullRequest
1 голос
/ 14 июля 2020

Итак, у меня есть следующая задача: у меня есть список данных с 2018 по июль 2020 года как DateTime. У меня есть оборот, привязанный к каждой позиции даты. Я хочу получить линейный график, который начинается с той же точки ori go и показывает развитие за последние годы. В настоящее время ось x показывает 2018,2019,2020 отдельно.

Я суммировал оборот за каждый год следующим образом: для 2018:

df_2018=df.loc['2018-01-01':'2018-12-31']
df_2018["Turnovercum"]=df_2018["Turnover"].cumsum()
Line_2018=df_2018["Turnovercum"]
Line_2018

Я проделал то же самое для 2019 и 2020

затем я построил его следующим образом:

fig = go.FigureWidget()
fig.add_trace(go.Scatter(x=Line_2020.index, y=Line_2020,
                    mode='lines',
                    name='Turnover 2020'))
fig.add_trace(go.Scatter(x=Line_2019.index, y=Line_2019,
                    mode='lines',
                    name='Turnover 2019'))
fig.add_trace(go.Scatter(x=Line_2018.index, y=Line_2018,
                    mode='lines',
                    name='Turnover 2018'))

Есть ли у вас какие-либо предложения о том, как построить его таким образом, чтобы все 3 линии начинались с одного и того же ori go? Вот как это выглядит в настоящий момент

Приветствуется любая помощь или ссылки, по которым можно это найти!

1 Ответ

0 голосов
/ 14 июля 2020

Вам нужно будет перевести ось x:

fig = go.FigureWidget()
fig.add_trace(go.Scatter(x=Line_2020.index-Line_2020.index.min(), y=Line_2020,
                    mode='lines',
                    name='Turnover 2020'))
fig.add_trace(go.Scatter(x=Line_2019.index-Line_2019.index.min(), y=Line_2019,
                    mode='lines',
                    name='Turnover 2019'))
fig.add_trace(go.Scatter(x=Line_2018.index-Line_2018.index.min(), y=Line_2018,
                    mode='lines',
                    name='Turnover 2018'))

Я полагаю, ваш index уже имеет тип datetime, если нет, вы можете просто добавить:

df_2018.index=df_2018.index.astype('datetime64[ns]')
...