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

使用Plotly绘制跨日期多标识符的分组堆叠条形图

Plotly 分日期分传感器堆叠条形图实现方案

你需要的是分组+堆叠组合型条形图,不需要复杂自定义开发,按以下步骤实现即可:

1. 数据预处理

原始数据的date_time是分钟级时间戳,首先要提取日期维度做一级分组,再按「日期、传感器ID、u_code」三个维度聚合统计计数,作为条形的高度值:

import pandas as pd
import plotly.express as px

# 转换时间格式,提取纯日期字段
df['date_time'] = pd.to_datetime(df['date_time'], format='%d-%m-%Y %H:%M')
df['date'] = df['date_time'].dt.date.astype(str)

# 聚合统计各维度下的记录数
plot_df = df.groupby(['date', 'sensor_id', 'u_code'], as_index=False)['u_code'].count().rename(columns={'u_code':'record_cnt'})

2. 绘图核心代码

调用Plotly Express条形图接口,通过多层x轴分类实现日期大分组、传感器子分组,再开启堆叠模式即可:

fig = px.bar(
    plot_df,
    # x轴传两层分类:第一层为日期(大组),第二层为传感器ID(同日期下的独立柱)
    x=[plot_df['date'], plot_df['sensor_id']],
    y='record_cnt',
    color='u_code',  # 按u_code区分堆叠层颜色
    barmode='stack',# 同传感器下的u_code数值堆叠展示
    hover_data=['sensor_id', 'u_code', 'record_cnt'] # 自定义悬浮提示内容
)

# 调整布局优化展示效果
fig.update_layout(
    xaxis_title='统计日期/传感器ID',
    yaxis_title='记录数量',
    bargap=0.35,     # 不同日期大分组之间的间距
    bargroupgap=0.1, # 同日期下不同传感器柱之间的间距
    legend_title='u_code类型'
)

fig.show()

可调参数说明

  • 如果不需要双层x轴标签,可以手动更新x轴刻度文本,把传感器ID和日期合并为单标签显示
  • 自定义配色可传入color_discrete_map参数,指定每个u_code对应的显示颜色
  • 调整柱宽度、间距直接修改bargap和bargroupgap的数值即可,数值越大间距越宽
  • 生成的图表默认保留Plotly所有交互能力:点击图例可筛选显示指定u_code、支持区域缩放、图片导出等操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:54:52