我试图复制excel数据透视表中完成的工作。我有3个变量(空闲时间,总时间和客户)。我想制作一个堆叠(重叠)的条形图,但不是所有变量的总和。
例如:if ..
Total_time = 10
Idle_time = 3
我希望条形图显示每个客户的空闲时间和总时间的最大值。
到目前为止,当我尝试使用stacked = True时,它只会叠加Total&空闲时间并创建一个最大值为10 + 3 = 13的条形图。我希望两个单独的条彼此重叠,其中一个条最大值为10,另一个条最大值为3。
data = df.pivot_table(df,index=['Customer'], aggfunc=np.sum)
ax = data[['Total time [hours]', 'Idle time [hours]']].plot.bar(stacked=True)
ax.set_ylabel("Miles")
ax.set_title("Total Miles Per Customer")
plt.show()
我已经上传了excel版本和pandas版本的屏幕截图,以便进一步说明。
提前致谢。
更新:请使用以下解决方案。
答案 0 :(得分:2)
一个简单的解决方案是将它们与最后的空闲时间分开绘制
df['Total time [hours]'].plot.bar(color='r')
df['Idle time [hours]'].plot.bar(color='b')
另一个解决方案是创建一个新列,该列等于总时间减去空闲时间,然后执行堆积条形图。您可以从那里重命名列
df['Extra_Time'] = df['Total time [hours]'] - df['Idle time [hours]']
data[['Idle time [hours]', 'Extra_Time']].plot.bar(stacked=True)