Plotly Python分组柱状图问题:实现S1/S2/S3差异化分组显示
解决Plotly Python分组柱状图显示问题
你当前得到堆叠柱状图,大概率是因为设置了barmode='stack'(或默认行为导致堆叠),同时数据结构可能没适配分组需求。要实现S1、S2、S3作为独立分组,每个分组内展示API1、API2、API3的并排柱状图,按以下步骤操作:
步骤1:整理数据格式
Plotly更适合处理长格式数据(每一行对应一个分组-API的数值组合),你可以把原表格转成这种格式:
import pandas as pd # 原数据转长格式 wide_data = { 'API1': [41, 40, 15], 'API2': [56, 50, 24], 'API3': [48, 45, 8] } df = pd.DataFrame(wide_data, index=['s1', 's2', 's3']).reset_index() df = df.melt(id_vars='index', var_name='API', value_name='Value').rename(columns={'index': 'Group'})
转换后的数据结构如下:
| Group | API | Value |
|---|---|---|
| s1 | API1 | 41 |
| s2 | API1 | 40 |
| s3 | API1 | 15 |
| s1 | API2 | 56 |
| s2 | API2 | 50 |
| s3 | API2 | 24 |
| s1 | API3 | 48 |
| s2 | API3 | 45 |
| s3 | API3 | 8 |
步骤2:绘制分组柱状图
用Plotly Express直接绘制,核心是设置barmode='group'实现并排分组:
import plotly.express as px fig = px.bar(df, x='Group', y='Value', color='API', barmode='group') # 自定义图表样式(可选) fig.update_layout( title='各分组API性能对比', xaxis_title='分组', yaxis_title='数值', legend_title='API类型' ) fig.show()
关键说明
barmode='group':强制柱子以分组并排的方式显示,替换默认或之前设置的stack模式color='API':用不同颜色区分三个API,让每个分组内的柱子差异化显示- 长格式数据:确保Plotly能正确识别分组(x轴)和分类(color)的对应关系
内容的提问来源于stack exchange,提问作者Luisa Fernanda Velasquez Camac
相关产品推荐
相关产品推荐

