You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:45:59