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

如何在Matplotlib中缩写柱状图xticks标签并在图侧单独说明

在Matplotlib中为缩写X轴标签添加侧边说明的实现方法

当然可以实现,以下是两种实用方案:

方案一:直接在图表两侧添加文本注释

这种方式无需额外子图,直接在主图的左右侧对应柱子的位置添加全称说明,直观简洁。

import matplotlib.pyplot as plt

# 模拟数据
short_labels = ['A', 'B', 'C', 'D']  # 缩写后的X轴标签
full_labels = ['十八字符长度的标签内容1', '十八字符长度的标签内容2', '十八字符长度的标签内容3', '十八字符长度的标签内容4']
bar_values = [12, 25, 18, 22]

fig, ax = plt.subplots(figsize=(10, 6))
ax.bar(short_labels, bar_values)

# 设置X轴刻度与缩写标签
ax.set_xticks(range(len(short_labels)))
ax.set_xticklabels(short_labels)

# 在左侧添加全称说明,对应每个柱子的垂直中心位置
for idx, full_name in enumerate(full_labels):
    # 计算Y轴位置,取柱子高度的中点
    y_center = bar_values[idx] / 2
    # 调整X轴偏移量,避免和柱子重叠
    ax.text(-0.3, y_center, full_name, ha='right', va='center', fontsize=10)

# 若需要右侧添加说明,取消下面代码注释
# for idx, full_name in enumerate(full_labels):
#     y_center = bar_values[idx] / 2
#     ax.text(len(short_labels)-0.7, y_center, full_name, ha='left', va='center', fontsize=10)

plt.tight_layout()
plt.show()

方案二:用子图放置规整的说明列表

如果需要更整齐的说明排版,可以单独用一个子图放置缩写与全称的对应列表,主图专注展示柱状图。

import matplotlib.pyplot as plt

short_labels = ['A', 'B', 'C', 'D']
full_labels = ['十八字符长度的标签内容1', '十八字符长度的标签内容2', '十八字符长度的标签内容3', '十八字符长度的标签内容4']
bar_values = [12, 25, 18, 22]

# 创建布局:左侧子图放说明,右侧主图放柱状图
fig = plt.figure(figsize=(13, 6))
ax_main = fig.add_subplot(1, 2, 2)  # 主图占右侧
ax_desc = fig.add_subplot(1, 2, 1)  # 说明子图占左侧

# 绘制主柱状图
ax_main.bar(short_labels, bar_values)
ax_main.set_xticks(range(len(short_labels)))
ax_main.set_xticklabels(short_labels)

# 隐藏说明子图的坐标轴,只保留文本
ax_desc.axis('off')
# 生成说明文本,每行是「缩写: 全称」的格式
desc_content = '\n'.join([f'{s}: {f}' for s, f in zip(short_labels, full_labels)])
# 将文本居中放置在子图中
ax_desc.text(0.5, 0.5, desc_content, ha='center', va='center', fontsize=12)

plt.tight_layout()
plt.show()

额外优化提示:如果需要更清晰的对应关系,可以使用ax.annotate()函数添加带箭头的注释,箭头指向对应的柱子,进一步提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:56