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

Matplotlib柱状图两组柱子间距过大问题咨询

解决两组柱状图间距过大且保持柱子宽度的问题

嘿,我懂你的痛点——既想缩小两组柱状图之间的空白,又得维持柱子宽度和之前的图表一致,不能靠加宽柱子来妥协。下面给你几个实用的解决思路,附代码示例:

方法1:手动调整柱子位置(精准控制间距)

这种方法最灵活,通过给两组柱子设置不同的偏移量,让它们彼此靠近,同时保持柱子宽度不变。

示例代码:

import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

sns.set()
sns.set_style("dark")
sns.set_style("whitegrid", {"xtick.major.size": 5})
sns.set(font_scale=1.2) # 补全你之前截断的代码

# 模拟数据
categories = ['A', 'B', 'C', 'D']
group1 = [10, 15, 12, 18]
group2 = [8, 16, 11, 20]
x = np.arange(len(categories))
width = 0.35 # 这个宽度保持和你之前图表一致

# 调整偏移量,缩小组间距(默认是width/2,这里改小比如width/3)
offset = width / 3

plt.figure(figsize=(10,6))
# 绘制两组柱子,分别往中间偏移
plt.bar(x - offset, group1, width=width, label='Group 1')
plt.bar(x + offset, group2, width=width, label='Group 2')

# 设置x轴标签
plt.xticks(x, categories)
plt.legend()
plt.tight_layout()
plt.show()

这里关键是把原本的width/2偏移量改成更小的值(比如width/3),这样两组柱子之间的空白就会缩小,而柱子宽度width完全保持和你之前的设置一致。

方法2:利用Seaborn的gap参数(Seaborn 0.12+版本可用)

如果你用的是较新的Seaborn版本(0.12及以上),可以直接在barplot或catplot里用gap参数来控制分组之间的间距,不用改柱子宽度。

示例代码:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 把数据整理成DataFrame格式
df = pd.DataFrame({
    'Category': ['A','A','B','B','C','C','D','D'],
    'Value': [10,8,15,16,12,11,18,20],
    'Group': ['Group1','Group2']*4
})

sns.set()
sns.set_style("dark")
sns.set_style("whitegrid", {"xtick.major.size": 5})

plt.figure(figsize=(10,6))
# 使用gap参数缩小分组间距,width保持原有值
sns.barplot(data=df, x='Category', y='Value', hue='Group', width=0.35, gap=0.1)
plt.legend()
plt.tight_layout()
plt.show()

gap参数的取值范围是0到1,值越小,分组之间的空白就越小,完美满足你保持柱子宽度的需求。

方法3:调整Matplotlib的子布局参数

如果上面的方法都不适用,还可以通过调整图表的x轴范围,把两组柱子的区域压缩,从而减小间距:

# 承接方法1的代码,在plt.show()之前添加:
# 获取当前x轴的范围
x_min, x_max = plt.xlim()
# 缩小x轴范围,让柱子更紧凑
plt.xlim(x_min + 0.2, x_max - 0.2)

这种方法比较粗暴,但适合快速调整,不过要注意别让柱子超出图表边界。

内容的提问来源于stack exchange,提问作者dhanush-ai1990

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:52:34