在 plotly 中堆叠条形图

stacked barplot in plotly

我的输入:

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();

通过将 x 轴设置为 'Count',您可以定义不堆叠的条。
您可以为 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()

结果:

您需要将底座设置为第一根柱子才能堆叠它们。现在您只定义了两个单独的条。从 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()

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