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

Matplotlib绘制分组柱状图时如何添加标注及居中x轴刻度

解决方案

以下是修正后的完整可运行代码,同时解决x轴标签居中和数值标注两个问题:

import numpy as np
import matplotlib.pyplot as plt

oct_data = [10, 24, 25, 30]
nov_data = [12, 42, 21, 78]

labels = ['Account_1', 'Account_2', 'Account_3', 'Account_4']
bar_width = 0.4

rect_1 = np.arange(0, len(oct_data)*2 ,2) 
rect_2 = [x + bar_width for x in rect_1]

plt.bar(rect_1, oct_data, color='#7f6d5f', width=bar_width, edgecolor='white', label='Month_1')
plt.bar(rect_2, nov_data, color='#557f2d', width=bar_width, edgecolor='white', label='Month_2')

plt.ylabel('Cost ($)', fontsize=10)

# 修正x轴标签居中
plt.xticks([r + bar_width/2 for r in range(0, len(oct_data)*2, 2)], labels)

# 分别给两组柱子添加数值标注
# Month1 标注
for x, val in zip(rect_1, oct_data):
    plt.text(x + bar_width/2, val//2, val, ha='center', color='black')
# Month2 标注
for x, val in zip(rect_2, nov_data):
    plt.text(x + bar_width/2, val//2, val, ha='center', color='black')

plt.legend()
plt.show()

问题原因说明

x轴标签不居中

你原来的xticks偏移量设置的是完整的bar_width,会让刻度落在第二个柱子的左边缘位置,自然无法居中。只需要把偏移量改为bar_width/2,就能刚好落在同组两个柱子的正中间。

分组柱状图数值标注失效

单组柱状图只有一套x坐标,遍历一次即可。分组柱状图有多少组柱子就需要遍历多少次,每次用对应柱子的x坐标作为基准,同样加上bar_width/2作为文本的水平居中位置,就能保证数值显示在对应柱子的内部中心。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:15:02