【问题标题】:How to make bar graph based on column category in Plotly python?如何根据 Plotly python 中的列类别制作条形图?
【发布时间】:2020-05-19 08:25:20
【问题描述】:

我有数据框

Date        Category    Sum
2019-06-03    "25M"      34
2019-06-03    "25M"      60
2019-06-03    "50M"      23
2019-06-04    "25M"      67
2019-06-05    "50M"     -90
2019-06-05    "50M"     100
2019-06-06    "100M"     6
2019-06-07    "25M"     -100
2019-06-08    "100M"     67
2019-06-09    "25M"      450
2019-06-10    "50M"      600
2019-06-11    "25M"      -9
2019-07-12    "50M"      45
2019-07-13    "50M"      67
2019-07-14    "100M"    130
2019-07-14    "50M"      45
2019-07-15    "100M"    100
2019-07-16    "25M"     -90
2019-07-17    "25M"     700
2019-07-18    "25M"     -9

首先,我将我的日期和类别与 Sum 分组,以便我得到这样的数据框。

df.groupby(["EntryDate","Category"]).agg({"NetProfit":"sum"}).reset_index()

 Date         Category   Sum
2019-06-03    "25M"      94
2019-06-03    "50M"      23
2019-06-04    "25M"      67
2019-06-05    "50M"      10
2019-06-06    "100M"     6     ...and so on     

我想创建 plotly 时间序列分组条形图,这样它将在 PLotly 中的相应日期向我显示“25M”、“50M”和“100M”的 3 个条形图。

【问题讨论】:

    标签: python-3.x plotly plotly-dash plotly-python


    【解决方案1】:

    我认为您想使用 standard bar chart 并为 25M、50M 和 100M 添加一个条目,例如:

    import plotly.graph_objects as go
    
    fig = go.Figure(data=[
        go.Bar(name='25M', x=df.EntryDate[df.Category=='25M'], y=df.NetProfit[df.Category=='25M']),
        go.Bar(name='50M', x=df.EntryDate[df.Category=='50M'], y=df.NetProfit[df.Category=='50M']),
        go.Bar(name='100M', x=df.EntryDate[df.Category=='100M'], y=df.NetProfit[df.Category=='100M'])
    ])
    
    fig.show()
    

    或者,在一个循环中:

    import plotly.graph_objects as go
    
    AMT=['25M','50M','100M']
    
    fig = go.Figure()
    for i in AMT:
        fig.add_trace(go.Bar(name=i, 
                             x=df.EntryDate[df.Category==i], 
                             y=df.NetProfit[df.Category==i],
                            )
                     )
    
    fig.show()
    

    【讨论】:

    • 我们是否有一个选项可以删除没有价值的东西? @jayveesea
    • 您能详细说明一下吗?
    • 我们可以看到,其中可能有日期,其中没有数据,因此,它们没有任何条。我想删除这些日期。 @jayveesea
    • 隐藏日期可能有助于使用rangebreaks
    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 2021-09-01
    • 2020-02-08
    • 2019-08-09
    • 2022-01-20
    • 2020-09-05
    • 2019-06-23
    • 2021-08-10
    相关资源
    最近更新 更多