使用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
相关产品推荐
相关产品推荐

