熊猫中两个数据框的瀑布图

问题描述

我有两个数据框,它们的行和列完全相同。 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),例如:

enter image description here

解决方法

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

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

输出:

enter image description here