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

使用seaborn.objects实现100%堆叠可视化

解决seaborn.objects中100%堆叠图的Norm失效问题

要实现每个x分组内各颜色类别占比总和为100%的堆叠图,你需要调整变换的顺序,并为so.Norm()指定正确的by参数,以下是修正后的代码:

100%堆叠柱状图

import seaborn as sns
import seaborn.objects as so

tips = sns.load_dataset("tips")

(
  so.Plot(tips, x="day", y="total_bill", color="time")
  .add(so.Bar(), so.Agg("sum"), so.Stack(), so.Norm(func="sum", by="day"))
  .label(y="Percentage")
)

100%堆叠面积图

(
  so.Plot(tips, x="size", y="total_bill", color="time")
  .add(so.Area(), so.Agg("sum"), so.Stack(), so.Norm(func="sum", by="size"))
  .label(y="Percentage")
)

关键说明

  • 变换顺序:必须先执行so.Agg("sum")聚合数据,再用so.Stack()堆叠类别,最后通过so.Norm()做归一化,这样才能确保每个x分组内的数值被正确缩放。
  • by参数:指定by="day"(柱状图)或by="size"(面积图),让归一化操作仅针对每个x轴分组内的总和进行,而非整个数据集的总和,这是实现100%堆叠的核心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:06:18