【问题标题】:stacked barplot in plotlyplotly中的堆积条形图
【发布时间】:2022-01-03 08:23:56
【问题描述】:

我的意见:

names_col = ['Count','Percentage']
dat = [['Matching', 63],['Mismatching', 37]]
plot_df = pd.DataFrame(data=dat,columns=names_col)

我只是尝试在 plotly 简单的条形字符中堆叠。 我的代码:

fig = px.bar(p_df, x='Count', y='Percentage', color='Count' ,title='My plot', barmode='stack')
fig.show();

我得到了什么:

这不是我所期望的。我想要这样的东西:

seaborn 内的代码:

    p=p_df.set_index('Count').T.plot(kind='bar', stacked=True, figsize=(12,8),rot=0) 
p.set_title('BBPS.2')
for x in p.containers:
    p.bar_label(x, label_type='edge', weight='bold')
    p.bar_label(x, label_type='center', weight='bold', color='white')
plt.show();

【问题讨论】:

    标签: python plotly bar-chart plotly-python


    【解决方案1】:

    通过将 x 轴设置为“计数”,您可以将条形定义为不堆叠。
    您可以为 x 轴找到不同的参数,也可以为两行添加一个具有相同值的虚拟列,以便它们具有相同的 x 值:

    import pandas as pd
    import plotly.express as px
    
    names_col = ['Count','Percentage', 'dummy']
    dat = [['Matching', 63, 0],['Mismatching', 37, 0]]
    plot_df = pd.DataFrame(data=dat,columns=names_col)
    fig = px.bar(plot_df, x='dummy', y='Percentage', color='Count' ,title='My plot')
    fig.show()
    

    结果:

    【讨论】:

      【解决方案2】:

      您需要将基础设置为第一个条形以便堆叠它们。现在您只定义了两个单独的条。看看来自dev.to post的这段代码:

      fig3 = go.Figure(
          data=[
              go.Bar(
                  name="Original",
                  x=data["labels"],
                  y=data["original"],
                  offsetgroup=0,
              ),
              go.Bar(
                  name="Model 1",
                  x=data["labels"],
                  y=data["model_1"],
                  offsetgroup=1,
              ),
              go.Bar(
                  name="Model 2",
                  x=data["labels"],
                  y=data["model_2"],
                  offsetgroup=1,
                  base=data["model_1"], 
              )
          ],
          layout=go.Layout(
              title="Issue Types - Original and Models",
              yaxis_title="Number of Issues"
          )
      )
      fig3.show()
      

      这导致了一个看起来像这样的情节:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2021-03-09
        • 2018-11-14
        • 2017-09-25
        • 2021-01-17
        • 2017-07-09
        • 2017-10-14
        相关资源
        最近更新 更多