能否基于value_counts()在Plotly中生成按退出码分色的团队分组/堆叠条形图
Plotly 实现团队/退出码维度的清晰可视化
用多层索引Series直接绘制matplotlib条形图时,会出现x轴标签重叠、图面臃肿的问题,可按照以下步骤通过Plotly实现符合要求的可视化:
第一步:预处理统计数据
保留原有分组计数逻辑,将多层索引的统计结果转换为Plotly可直接识别的格式,空值自动补0避免绘图报错:
import pandas as pd import plotly.express as px # 沿用原有分组统计逻辑 count_series = df.groupby('Team')['Exit Code'].value_counts() # 把多层Series转成宽表,缺失计数补0 count_wide = count_series.unstack(fill_value=0).reset_index() # 转成长格式匹配Plotly的参数规则 count_long = count_wide.melt(id_vars="Team", var_name="Exit Code", value_name="Count")
第二步:基础绘图
直接指定维度映射,Plotly会自动为不同退出码分配独立颜色:
fig = px.bar( count_long, x="Team", # x轴为团队名称 y="Count", # y轴为对应退出码的任务计数 color="Exit Code", # 不同退出码自动匹配不同区分度的颜色 barmode="group", # 并列条形模式,改为"stack"即为*堆叠条形模式* title="各团队不同退出码的任务数量统计", text_auto=True # 自动在条形上标注对应数值 )
第三步:图面美化调整
移除冗余视觉元素,解决原图拥挤臃肿的问题:
fig.update_layout( xaxis_title="团队名称", yaxis_title="任务计数", legend_title="退出码类型", plot_bgcolor="white", # 替换默认的浅灰色背景 bargap=0.2, # 调整组间条形的间距,避免拥挤 ) # 仅保留y轴的浅淡网格,降低视觉干扰 fig.update_yaxes(showgrid=True, gridcolor="#eeeeee")
常用自定义调整选项
- 团队数量较多时,把
barmode参数从group改为stack,每个团队仅占1个条形宽度,图面会紧凑很多 - 退出码较多、默认颜色区分度不足时,可通过
color_discrete_map手动指定固定颜色,比如成功退出码(0)用绿色、异常码用红色,提升可读性 - 这套逻辑完全可复用在GPU维度的统计上,仅需把代码中
x="Team"改为x="GPU",不需要重写统计逻辑
内容的提问来源于stack exchange,提问作者py_noob
相关产品推荐
相关产品推荐

