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

如何用Python绘制堆叠柱状图展示各时段事件计数?

Python实现堆叠柱状图展示各时段事件计数

步骤1:数据预处理

首先需要将原始数据转换为小时-事件的计数矩阵,每个单元格对应某小时内某事件的发生次数,缺失的事件计数自动补0。可以用pandas.crosstab快速实现:

import pandas as pd
import matplotlib.pyplot as plt

# 原始数据
df = pd.DataFrame()
df['hour']=['00:00', '00:00','01:00', '01:00','01:00','02:00','02:00','03:00','03:00','03:00','03:00','03:00','04:00','05:00','05:00','05:00']
df['event']=['abc','def','abc','def','ghj','def','klm','mno','klm','ghj','pqr','stu','def', 'abc','pqr','mno' ]

# 生成小时-事件的计数交叉表
count_df = pd.crosstab(df['hour'], df['event'])

步骤2:绘制堆叠柱状图

直接调用DataFrame的plot方法,指定kind='bar'和stacked=True即可生成堆叠柱状图,再添加必要的标签和图例优化可读性:

# 绘制堆叠柱状图
ax = count_df.plot(kind='bar', stacked=True, figsize=(10,6))

# 设置图表属性
ax.set_title('各时段事件计数堆叠图')
ax.set_xlabel('小时')
ax.set_ylabel('事件计数')
ax.legend(title='事件类型', bbox_to_anchor=(1.05, 1), loc='upper left')

# 自动调整布局避免元素遮挡
plt.tight_layout()
plt.show()

关键说明

  • pd.crosstab会自动统计每个小时下各事件的出现次数,未出现的事件会填充0,保证数据结构适配堆叠绘图需求。
  • stacked=True是实现堆叠效果的核心参数,让同一小时的不同事件计数在柱子上叠加展示。
  • 将图例放在图表外侧(bbox_to_anchor参数)可以避免遮挡柱子,提升图表清晰度。

内容的提问来源于stack exchange,提问作者mainburnerone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:37:12