pandas 中两个数据框的瀑布图

waterfalls graph for two data frame in pandas

我有两个数据框,它们的行和列完全相同。 df1 显示模式的百分比 %:

                    pt      car     bike    walk
Equilibrium         28.80   36.82   3.55    30.83
No information      28.80   36.82   3.55    30.83
start               28.82   36.83   3.55    30.80
Equilibrium2        28.51   36.95   3.56    30.98

df2 是行程时间(分钟)

                    pt          car         bike    walk
Equilibrium         384651.50   216673.23   24136.57    88602.10
No information      397068.27   216640.15   24133.03    88565.93
start               386008.27   216664.17   24136.57    88521.93
Equilibrium2        383788.73   215751.85   26638.87    89602.90

我想要如下图表,其中 x 轴显示模式 (df1) 的百分比,Y 轴显示每个列名称的旅行时间 (df2),例如:

让我们尝试绘制带底部的条形图:

colors = [f'C{i}' for i in range(4)]
fig, axes = plt.subplots(2,2, figsize=(8,8))

for idx, ax in zip(df1.index, axes.ravel()):
    s1, s2 = df1.loc[idx].cumsum(),df2.loc[idx].cumsum()
    ax.bar(s1.shift(fill_value=0),df2.loc[idx],width=df1.loc[idx],
            bottom=s2.shift(fill_value=0), align='edge', color=colors)
    ax.set_title(idx)        

fig.tight_layout()

输出: