Plotly堆叠条形图自定义:实现纯色无间隙填充及颜色统一
问题解决:堆叠条形图纯色填充、消除间隙及颜色修正
问题原因
原代码直接用原始订单日期结合xperiod='M1'做月度分组,但各区域的订单日期并非覆盖所有月份,导致不同区域的条形在x轴上无法对齐,出现间隙;同时原始离散日期点会把条形分割成多个小段,呈现颜色不均的效果。
解决方案
核心是提前按月度+区域聚合销售额,确保每个月份下所有区域都有对应数据(无数据的补0),再基于聚合后的数据绘图,同时设置条形间隙为0。
修改后代码
import plotly.graph_objects as go import pandas as pd # 假设df是加载完成的Superstore Sales数据集 # 1. 数据预处理:按月度+区域聚合销售额 df['order_month'] = df['order_date'].dt.to_period('M').astype(str) # 转换为"YYYY-MM"格式字符串 monthly_sales = df.groupby(['order_month', 'region'])['sales'].sum().unstack(fill_value=0) # 2. 绘制堆叠条形图 fig = go.Figure() for region in monthly_sales.columns: fig.add_trace( go.Bar( x=monthly_sales.index, y=monthly_sales[region], name=region ) ) # 3. 布局配置(保留原样式,新增消除间隙设置) fig.update_layout( height=800, width=1750, title_text="Sales dynamic by region", title_font={ 'size': 26, 'color': '#71797E', 'family': 'Arial' }, barmode='stack', plot_bgcolor='#F3F2F2', bargap=0 # 消除条形间的间隙 ) fig.show()
关键说明
- 数据聚合:通过
groupby(['order_month', 'region'])保证每个月份下所有区域都有销售额数据,缺失值用fill_value=0补全,解决条形对齐问题。 - 纯色填充:基于聚合后的单条月度数据绘图,每个区域的月度条形是完整单一色块,不会出现分割。
- 消除间隙:
bargap=0让同组条形完全贴合,无间隙。
内容的提问来源于stack exchange,提问作者Ars
相关产品推荐
相关产品推荐

