问题描述
我有两个数据框,它们的行和列完全相同。 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),例如:
解决方法
让我们尝试用底部绘制条形图:
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()
输出: