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



所以我面临以下挑战:我有一份2018年至2020年7月的数据列表,作为DateTime我有每个日期职位的营业额我想要实现的是一个从同一起点开始并展示过去几年发展的线形图。目前,x轴分别显示201820192020。

我每年的营业额是这样累积的: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行都从同一个原点开始?这就是此刻的样子

任何帮助或链接,在哪里查找这是非常感谢!

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

最新更新