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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:32:09