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

Superset能否实现兼具分组与堆叠效果的组合柱状图?

Superset 实现分组+堆叠混合柱状图方案

针对你需要的「按城市分组对比,组内堆叠不同产品销售额」的需求,Superset原生柱状图的单纯堆叠/分组模式确实无法直接满足,但可以通过以下几种方式解决:

方法1:利用新版本Superset的分层堆叠功能(推荐)

如果你的Superset版本在v2.1及以上,原生柱状图支持分层堆叠配置:

  • 在图表配置的BREAKDOWN栏中,按顺序添加维度:先选城市作为分组维度,再选产品类型作为堆叠维度
  • 切换到「样式」标签页,找到「堆叠模式」,选择分组堆叠选项
  • 将X轴设置为你需要的时间维度(比如月份),即可实现每个时间节点下,按城市分组、组内堆叠产品销售额的效果

方法2:自定义SQL预处理数据(兼容所有版本)

如果是旧版本Superset,先通过自定义SQL提前聚合数据:

SELECT
    date_trunc('month', sale_date) AS sale_month, -- 按月份聚合,可替换为你的时间维度
    city,
    product_type,
    SUM(sales_amount) AS total_sales
FROM your_sales_table -- 替换为你的数据表名
GROUP BY sale_month, city, product_type
ORDER BY sale_month, city

完成数据预处理后,在柱状图配置中:

  • X轴选择sale_month
  • BREAKDOWN按顺序添加city和product_type
  • 在「样式」中开启「堆叠」,并将city设置为分组维度,即可实现目标效果

方法3:自定义ECharts图表(灵活度最高)

如果前两种方法无法满足,可以通过Superset的自定义ECharts插件实现完全自定义的分组堆叠逻辑:

  • 安装Superset的ECharts扩展插件后,直接编写ECharts配置项,核心示例如下:
option = {
    xAxis: { type: 'category', data: ['2024-01', '2024-02'] }, // 替换为你的时间维度数据
    yAxis: { type: 'value', name: '销售额' },
    tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } },
    legend: { data: ['城市A-产品1', '城市A-产品2', '城市B-产品1', '城市B-产品2'] },
    series: [
        { name: '城市A-产品1', type: 'bar', stack: '城市A', data: [120, 180] },
        { name: '城市A-产品2', type: 'bar', stack: '城市A', data: [90, 150] },
        { name: '城市B-产品1', type: 'bar', stack: '城市B', data: [100, 160] },
        { name: '城市B-产品2', type: 'bar', stack: '城市B', data: [80, 130] }
    ]
};

这种方式可以根据你的数据结构灵活调整分组和堆叠规则。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:09:25