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

Python中如何分离两组柱状图?解决组间紧密重叠问题

解决分组柱状图紧密贴合的问题

嘿,我来帮你搞定这个分组柱状图的间距问题!你的代码里两组柱子挤在一起,核心原因是每个类别(z=1和z=6)分配的空间刚好被5个柱子填满,没有预留组间的空隙。咱们来调整一下位置计算逻辑,轻松把两组分开:

核心思路

给每个分组(z=1/z=6)分配足够容纳5个柱子的空间,同时在分组之间额外预留间隙,避免柱子紧密贴合。

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 示例数据(请替换成你的真实数据)
Unf1_list = [10, 100]
Unf2_list = [20, 200]
Unf3_list = [30, 300]
Unf4_list = [40, 400]
Unf5_list = [50, 500]

# 定义关键参数
n_bars_per_group = 5  # 每组的柱子数量
bar_width = 0.2       # 单个柱子宽度
group_gap = 0.3       # 组间间隙,可根据视觉需求调整大小

# 重新计算分组的起始位置,预留组间间隙
X = np.arange(2) * (n_bars_per_group * bar_width + group_gap)

# 绘制每组的5个柱子,按顺序偏移位置
plt.bar(X + 0 * bar_width, Unf1_list, color='b', width=bar_width, align='center')
plt.bar(X + 1 * bar_width, Unf2_list, color='g', width=bar_width, align='center')
plt.bar(X + 2 * bar_width, Unf3_list, color='r', width=bar_width, align='center')
plt.bar(X + 3 * bar_width, Unf4_list, color='y', width=bar_width, align='center')
plt.bar(X + 4 * bar_width, Unf5_list, color='gray', width=bar_width, align='center')

plt.yscale('log')
# 将刻度设置在每个分组的中心位置,保证对齐美观
plt.xticks(X + (n_bars_per_group - 1) * bar_width / 2, ['z=1', 'z=6'])
plt.show()

为什么这样修改?

  • 原来的X = np.arange(2)给每个分组只分配了1单位的空间,而5个柱子总宽度刚好是5*0.2=1,导致分组之间没有空隙,柱子紧密贴合。
  • 现在我们把分组的起始位置步长改为n_bars_per_group * bar_width + group_gap,既保证每组能放下所有柱子,又额外预留了组间间隙。
  • 调整xticks到分组中心,让刻度和对应分组的位置完美对齐,提升图表可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:49:34