Python:将累计营业额的同比比较绘制为折线图

Python: Plot year-over-year comparison of cumulated turnover as a line chart

所以我面临以下挑战: 我有一个从 2018 年到 2020 年 7 月的数据列表作为 DateTime 我在每个日期职位上都有营业额 我想要实现的是一个从同一个起点开始并显示过去几年发展的线图。目前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 条线都从同一起点开始的方式绘制它,您有什么建议吗?This is how it looks like at this moment

非常感谢任何帮助或查找此内容的链接!

您需要平移您的 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]')