如何在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
相关产品推荐
相关产品推荐

