问题描述
我有两个数据框,它们的行和列完全相同。 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()
输出: