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

Matplotlib如何调整x轴刻度间距及实现柱状图并排无空隙

Matplotlib柱状图问题解决代码与说明

完整可运行修改代码

import matplotlib.pyplot as plt

years = [2010,2015,2020,2021]
photovoltaics = [3549,4351,5000,7200]
hydropower = [1190,2930,3200, 4500]
# 生成等间距索引作为x轴基准坐标
x = range(len(years))
# 设置单组柱子宽度,两组总宽度为1,刚好填满刻度间隔,无空隙
width = 0.5

# 可通过调整figsize的第一个参数放大x轴整体刻度间距,数值越大间距越大
fig, ax = plt.subplots(figsize=(8, 5))
# 第一组柱子左偏移半个宽度
ax.bar([i - width/2 for i in x], photovoltaics, width=width)
# 第二组柱子右偏移半个宽度
ax.bar([i + width/2 for i in x], hydropower, width=width)

# 设置x轴刻度为对应年份
ax.set_xticks(x)
ax.set_xticklabels(years)

fig.tight_layout()
plt.show()

问题1:调整x轴刻度间距的方法

  • 原代码直接用年份数值作为x轴坐标,因为年份间隔不相等(2020到2021间隔1,其余间隔5),会出现刻度疏密不均的问题。改用等长的序列索引作为x轴实际坐标,再把刻度标签替换为年份,即可实现均匀的刻度间距。
  • 如需调整整体刻度的疏密程度,修改plt.subplots中figsize参数的第一个值(画布宽度)即可,数值越大x轴刻度间距越大。

问题2:两组柱状图并排且消除空隙的方法

  • 原代码添加了bottom参数,实际绘制的是堆叠柱状图,无法实现并排效果。要实现并排,需要对两组柱子的x坐标分别做反向偏移,让两组柱子分别位于刻度线的左右两侧。
  • 两个相邻索引的默认间隔为1,将单组柱子宽度设置为0.5,两组总宽度刚好为1,拼接后完全填满刻度间隔,不会出现白色空隙。如果需要保留少量空隙,适当调小width参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:57:03