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
相关产品推荐
相关产品推荐

