【问题标题】:Creating stacked bar chart from dataframe从数据框创建堆积条形图
【发布时间】:2020-09-30 19:43:14
【问题描述】:

我有一个表,其中行中包含不同的场景,列中与它们相关联的值

这样

| Scenario   |    A |     B |   C |
|:-----------|-----:|------:|----:|
| Scen1      |  6.5 | 0.125 |  52 |
| Scen2      | 16.5 | 1.125 | 152 |
| Scen3      | 26.5 | 2.125 | 252 |

我想制作一个堆积条形图similar to this

即我想要三个条(每个场景 Scen1、Scen2、Scen3 一个),并且每个条有三个部分(表示来自 A、B、C 的值)

我尝试了以下方法,但不知道如何正确地将数据帧传递给px.bar

import pandas as pd
import plotly.express as px

df = pd.DataFrame()
dict1 = {'A': 6.5, 'B': 0.125, 'C': 52}
series1 = pd.Series(data=dict1, name='Scen1')
df = df.append(series1)
dict2 = {'A': 16.5, 'B': 1.125, 'C': 152}
series2 = pd.Series(data=dict2, name='Scen2')
df = df.append(series2)
dict3 = {'A': 26.5, 'B': 2.125, 'C': 252}
series3 = pd.Series(data=dict3, name='Scen3')
df = df.append(series3)
df.index.name = "Scenario"


fig = px.bar(df, x="Scenario", y=["A","B", "C"], title="Test")
fig.show()

【问题讨论】:

    标签: pandas plotly-python


    【解决方案1】:

    使用DataFrame.melt 预处理数据:

    df = df.reset_index().melt('Scenario')
    print (df)
      Scenario variable    value
    0    Scen1        A    6.500
    1    Scen2        A   16.500
    2    Scen3        A   26.500
    3    Scen1        B    0.125
    4    Scen2        B    1.125
    5    Scen3        B    2.125
    6    Scen1        C   52.000
    7    Scen2        C  152.000
    8    Scen3        C  252.000
    
    
    import plotly.express as px
    
    fig = px.bar(df, x="Scenario", y="value", color="variable", title="Test")
    fig.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      相关资源
      最近更新 更多