如何为特定数据创建堆叠条形图?Plotly代码调试求助
堆叠条形图实现方案
你的问题核心是当前分组仅得到每个城市的总消费金额,没有可拆分的子分类维度(比如消费类别),因此无法生成堆叠效果。堆叠条形图需要基于「城市+子分类」的分组数据,才能把每个城市的总金额拆分为多个堆叠部分。
以下是具体实现代码:
- 筛选消费最高的4个城市
# 获取消费Top4的城市列表 top_4_cities = df.groupby('City')['Amount'].sum().sort_values(ascending=False).head(4).index # 过滤出这4个城市的所有交易数据 filtered_data = df[df['City'].isin(top_4_cities)]
- 按城市+子分类(以
Category为例)分组计算金额
# 按城市和消费类别分组求和,得到可堆叠的细分数据 stacked_data = filtered_data.groupby(['City', 'Category'])['Amount'].sum().reset_index()
- 绘制堆叠条形图
import plotly.express as px # 使用px.bar并设置barmode='stack'实现堆叠 fig = px.bar( stacked_data, x='City', y='Amount', color='Category', # 按消费类别拆分堆叠 barmode='stack', title='Top4城市信用卡消费堆叠条形图', labels={'Amount': '总消费金额', 'City': '城市', 'Category': '消费类别'} ) fig.show()
注意事项
- 替换
Category为你需要的子分类字段:如果数据集中有其他细分维度(如商户类型、消费时段),直接替换即可。 - 避免用
px.histogram:直方图用于数据分布统计,展示分类对比用px.bar更合适,堆叠参数barmode='stack'是实现堆叠的关键。
内容的提问来源于stack exchange,提问作者Caecilia A Rahman
相关产品推荐
相关产品推荐

