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

Matplotlib:X轴刻度标签未对齐三组柱状图下方居中位置求助

解决Matplotlib三组柱状图X轴标签居中对齐问题

问题根源是你设置X轴刻度位置时,选的是单根柱子的位置,而非整组三根柱子的中心位置。只需调整两处即可实现精准居中:

  • 修正刻度位置:三组柱子总宽度为 3 * bar_width,每组中心位置是 x_pos + bar_width * 1.5(从每组第一个柱子的起始位置,向右偏移1.5倍柱子宽度)。
  • 调整标签对齐:把标签的水平对齐设为 center,确保标签精准落在中心下方。

修改后的核心代码行:

plt.xticks(x_pos + bar_width * 1.5, x, rotation='vertical', ha='center')

完整可运行代码:

import pandas as pd

data = {
    'Messwert1': [10, 5, 8],
    'Messwert2': [7, 3, 6],
    'Messwert3': [12, 10, 15],
    'Typ': ['Annn', 'Bnnn \n kkks', 'C']
}

df = pd.DataFrame(data)

import numpy as np
import matplotlib.pyplot as plt

# 提取数据
x = df['Typ']
y1 = df['Messwert1']
y2 = df['Messwert2']
y3 = df['Messwert3']

# 计算柱子位置
bar_width = 0.2
x_pos = np.arange(len(x))

# 绘制三组柱状图
plt.bar(x_pos, y1, width=bar_width, label='Messwert1')
plt.bar(x_pos + bar_width, y2, width=bar_width, label='Messwert2')
plt.bar(x_pos + 2*bar_width, y3, width=bar_width, label='Messwert3')

# 添加轴标题
plt.xlabel('Typ')
plt.ylabel('Messwerte')

# 调整X轴刻度(已修正)
plt.xticks(x_pos + bar_width * 1.5, x, rotation='vertical', ha='center')

# 显示图例
plt.legend()

# 展示图表
plt.show()

原理说明:
每组三个柱子的水平范围是从 x_pos 到 x_pos+3*bar_width,中心恰好是 x_pos + 1.5*bar_width;设置 ha='center' 让标签以该中心为基准水平居中,彻底解决偏移问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:52:43