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

如何在Seaborn分组(hue)直方图的同组条形间添加间距?

在Seaborn histplot的dodge模式下调整hue分组条形间距

Seaborn的histplot在使用hue结合multiple="dodge"时,同x轴类别下的分组条形默认间距很小。要手动调整这个间距,需要借助matplotlib的API修改条形位置,具体实现如下:

完整代码示例

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
# 绘制基础直方图
ax = sns.histplot(data=tips, x="day", hue="sex", multiple="dodge", shrink=.9)

# 获取hue分组的数量(这里对应Male和Female两组)
hue_group_num = len(tips["sex"].unique())
# 获取单个条形的原始宽度
bar_width = ax.patches[0].get_width()
# 设置同组条形之间的间距(可根据需求调整,比如0.1、0.2)
intra_group_gap = 0.1

# 遍历所有条形,调整位置实现间距
for idx, bar in enumerate(ax.patches):
    # 确定当前条形属于第几个hue分组
    group_index = idx % hue_group_num
    # 计算偏移量:以组中心为基准,左右分组分别偏移
    offset = (group_index - (hue_group_num - 1)/2) * (bar_width + intra_group_gap)
    # 更新条形的x位置
    bar.set_x(bar.get_x() + offset)

plt.show()

关键参数说明

  • hue_group_num:自动获取hue参数对应的分组数量,适配不同数据集的分组情况
  • intra_group_gap:直接控制同组条形的间距,数值越大,条形间的空隙越宽
  • shrink:用于调整整个x类别下所有hue条形的整体宽度,和同组内间距互不冲突,可根据视觉效果搭配调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:22:51