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

问题描述

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

                    pt      car     bike    walk
Equilibrium         28.80   36.82   3.55    30.83
No @R_158_4045@ion      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 @R_158_4045@ion      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