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

如何在Matplotlib中实现条形间距不同的四对分组直方图?

在Matplotlib中实现分组间距不同的条形图

要做出你需要的“组内条形紧凑、组与组之间间距更大”的条形图,核心是手动指定每个条形的x轴位置,而非依赖Matplotlib的默认布局。下面是具体实现步骤和代码:

步骤说明

  1. 先定义每组的中心x坐标,组与组之间预留较大间隔;
  2. 在每组内部,给两个条形设置相对于组中心的小偏移量,保证组内紧凑;
  3. 基于自定义的x坐标绘制条形,最后对齐x轴刻度与组名。

完整代码示例

import matplotlib.pyplot as plt
import numpy as np

# 定义数据
groups = ["组1", "组2", "组3", "组4"]
series1_data = [12, 18, 15, 20]
series2_data = [8, 14, 10, 16]

# 配置间距参数
group_spacing = 2  # 组与组之间的间隔(x轴单位)
intra_group_gap = 0.3  # 组内两个条形的间隔
bar_width = 0.3  # 单个条形的宽度

# 计算每组的中心x位置
group_centers = np.arange(len(groups)) * (1 + group_spacing)
# 计算每组内两个条形的x位置
bar1_x = group_centers - intra_group_gap / 2
bar2_x = group_centers + intra_group_gap / 2

# 绘制条形
plt.bar(bar1_x, series1_data, width=bar_width, label="系列1")
plt.bar(bar2_x, series2_data, width=bar_width, label="系列2")

# 设置x轴刻度与标签
plt.xticks(group_centers, groups)

# 添加图例与标签
plt.legend()
plt.title("分组间距自定义条形图")
plt.xlabel("组别")
plt.ylabel("数值")

plt.tight_layout()
plt.show()

调整技巧

  • 修改group_spacing可以控制组间的宽松程度,数值越大,组与组之间的空隙越宽;
  • 调整intra_group_gap和bar_width可以优化组内条形的紧凑度,注意bar_width不要超过intra_group_gap,避免条形重叠;
  • 如果需要每组包含更多条形,只需扩展bar_x的计算逻辑即可(比如三组条形就设置三个偏移量)。

内容的提问来源于stack exchange,提问作者f. c.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:25:23