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

Matplotlib柱状图Xticks重叠:如何加宽柱子间距解决pH刻度重叠

问题与解决方案:Matplotlib柱状图重叠问题处理

问题描述

使用Matplotlib绘制柱状图时,pH值6.5和6.52对应的柱子因数值过于接近出现重叠,同时X轴刻度也存在重叠问题。原代码如下:

pH = [ 4.5 ,  5.  ,  5.1 ,  5.4 ,  5.6 ,  5.7 ,  6.  ,  6.3 ,  6.5 , 6.52,  6.7 ,  6.8 ,  6.9 ,  7.  ,  7.1 ,  7.2 ,  7.3 ,  7.4 , 7.5 ,  7.6 ,  7.8 ,  8.  ,  8.1 ,  8.2 ,  8.3 ,  8.5 ,  8.7 , 9.  ,  9.2 ,  9.6 ,  9.8 ,  9.9 , 10.  ]
pH_count = [  8,   3,   1,   2,   3,   1, 109,   2,   9,   1,   2,   4,  11, 119,   6,  16,   2,  30,  27,   1,  43,  71,   1,   2,   1,   8, 4,  27,   9,   3,   2,   2,  50]

fig, ax = plt.subplots(figsize = (10,4))

ax.bar(pH, pH_count, width = 0.1)
ax.set_xticks(pH)
plt.xticks(rotation = 90)
ax.set_ylabel("count")
ax.set_xlabel('pH')
plt.show()

当前图表中,6.5与6.52的柱子完全重叠,X轴刻度因数量多且部分数值接近,旋转90度后仍显得拥挤。

解决方案

加宽柱子间距无法解决该问题——因为当前X轴是连续数值轴,6.5和6.52本身的数值间距极小,加宽柱子宽度反而会加剧重叠。正确的处理方式是将X轴转换为分类轴,把每个pH值当作独立类别而非连续数值:

修改后的代码

import matplotlib.pyplot as plt

pH = [ 4.5 ,  5.  ,  5.1 ,  5.4 ,  5.6 ,  5.7 ,  6.  ,  6.3 ,  6.5 , 6.52,  6.7 ,  6.8 ,  6.9 ,  7.  ,  7.1 ,  7.2 ,  7.3 ,  7.4 , 7.5 ,  7.6 ,  7.8 ,  8.  ,  8.1 ,  8.2 ,  8.3 ,  8.5 ,  8.7 , 9.  ,  9.2 ,  9.6 ,  9.8 ,  9.9 , 10.  ]
pH_count = [  8,   3,   1,   2,   3,   1, 109,   2,   9,   1,   2,   4,  11, 119,   6,  16,   2,  30,  27,   1,  43,  71,   1,   2,   1,   8, 4,  27,   9,   3,   2,   2,  50]

# 创建索引作为分类轴的x坐标
x_indices = range(len(pH))

fig, ax = plt.subplots(figsize=(12, 4))  # 加宽画布宽度,优化刻度显示

# 使用索引绘制柱状图,设置合适的柱子宽度
ax.bar(x_indices, pH_count, width=0.8)

# 设置X轴刻度为索引,刻度标签为原始pH值
ax.set_xticks(x_indices)
ax.set_xticklabels(pH, rotation=90)

ax.set_ylabel("count")
ax.set_xlabel('pH')
plt.tight_layout()  # 自动调整布局,避免标签被截断
plt.show()

修改说明

  • 用range(len(pH))生成的索引代替原始pH值作为x坐标,确保每个柱子间距均等,彻底解决数值接近导致的柱子重叠问题
  • 加宽画布宽度(figsize=(12,4))并使用plt.tight_layout(),避免X轴刻度标签被截断或拥挤
  • 调整柱子宽度为0.8,让柱子之间保留合适的空隙,同时充分利用分类轴的空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:36:17