如何用Python创建按key分组对比total_time的柱状图
生成分组柱状图对比不同Key的Total Time值
可以用以下两种常见方法实现需求:
方法1:使用Seaborn快速绘制(推荐)
Seaborn的catplot可以直接生成分组柱状图,代码简洁易读:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 你的数据 d = {'total_time':[1,2,3,4], 'date': ['2022-09-11', '2022-09-11', '2022-09-13', '2022-09-13'], 'key': ['A', 'B', 'A', 'B']} df_sample = pd.DataFrame(data=d) # 绘制分组柱状图 sns.catplot( x='date', y='total_time', hue='key', # 按key区分不同柱子 kind='bar', data=df_sample ) plt.title('不同Key的总时长对比') plt.xlabel('日期') plt.ylabel('总时长') plt.show()
hue参数会自动将同一日期下不同key的柱子并排显示,直接实现对比效果。
方法2:使用Matplotlib手动定制
如果需要更灵活的自定义,可以手动计算柱子位置来绘制:
import pandas as pd import matplotlib.pyplot as plt # 你的数据 d = {'total_time':[1,2,3,4], 'date': ['2022-09-11', '2022-09-11', '2022-09-13', '2022-09-13'], 'key': ['A', 'B', 'A', 'B']} df_sample = pd.DataFrame(data=d) # 透视数据,将key转为列 df_pivot = df_sample.pivot(index='date', columns='key', values='total_time').reset_index() bar_width = 0.35 x = range(len(df_pivot['date'])) # 绘制两组柱子,调整位置实现并排 plt.bar([i - bar_width/2 for i in x], df_pivot['A'], width=bar_width, label='Key A') plt.bar([i + bar_width/2 for i in x], df_pivot['B'], width=bar_width, label='Key B') # 设置轴标签和图例 plt.xticks(x, df_pivot['date']) plt.title('不同Key的总时长对比') plt.xlabel('日期') plt.ylabel('总时长') plt.legend() plt.show()
这种方法通过调整柱子的偏移量,实现同一日期下不同key的柱子并排,方便自定义样式(比如柱子颜色、宽度等)。
内容的提问来源于stack exchange,提问作者Wolfy
相关产品推荐
相关产品推荐

