【问题标题】:Python: Plot year-over-year comparison of cumulated turnover as a line chartPython:将累计营业额的逐年比较绘制为折线图
【发布时间】:2020-07-14 14:47:08
【问题描述】:

所以我面临以下挑战: 我有一个从 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 行都从同一个 origo 开始的方式绘制它有什么建议吗?This is how it looks like at this moment

非常感谢您提供任何帮助或链接来查找此内容!

【问题讨论】:

    标签: python pandas linechart


    【解决方案1】:

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

    【讨论】:

    • 嘿阿里,谢谢你的回答!那真的很聪明。唯一的问题是 x 轴有点奇怪,它显示为 0,5 x 10^16,它上升到 3 x 10^16。你知道怎么解决吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    相关资源
    最近更新 更多