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

如何在Seaborn绘图中同时实现堆叠与分组柱状图?

实现堆叠+分组柱状图(Seaborn Objects)

要在每个size(用餐人数)下生成两组(按smoker区分)堆叠柱状图(按time堆叠),可通过先分组再堆叠的逻辑实现,调整seaborn.objects的图层参数即可:

修正后的代码

import seaborn.objects as so
import seaborn as sns

tips = sns.load_dataset("tips")
p = (
    so.Plot(tips, x="size", y="total_bill", color="time", offset="smoker")
    .add(so.Bar(), so.Agg(), so.Stack(), so.Dodge(width=0.8))
    .scale(x=so.Nominal())
    .label(title="按用餐人数分组的吸烟/非吸烟堆叠账单总额")
)
p.show()

关键参数说明

  • color="time":以time(用餐时段)作为堆叠维度,不同时段用不同颜色区分。
  • offset="smoker":以smoker(是否吸烟)作为分组偏移维度,每个size下生成两组独立的堆叠柱。
  • so.Stack():实现同一分组内的柱状图堆叠,聚合不同time对应的total_bill值。
  • so.Dodge(width=0.8):控制分组间的间距,避免同一size下的两组堆叠柱重叠。
  • so.Agg():默认对total_bill做均值聚合,也可指定具体函数如so.Agg("sum")改为求和统计。

这样就能生成目标效果:每个用餐人数类别下,分别展示吸烟、非吸烟两组数据,每组内堆叠显示午餐、晚餐的账单总额。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:42:33