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

matplotlib绘制柱状图时如何让柱顶标注文本适配画布不溢出

问题原因

当前柱顶标注显示在画布外,由两个问题导致:

  • 标注的y轴坐标直接取柱子高度,没有给旋转90度的文本预留和柱顶的间距,文本从柱顶位置直接向上延伸
  • matplotlib默认y轴上限和最高柱顶齐平,没有给顶部标注预留显示空间,超出轴范围的文本会被直接裁切
修复实现

支持自定义标注字号、自定义柱顶与标注的间距,修复后代码如下:

# 按需修改以下两个自定义参数
custom_fontsize = 7    # 标注文本字号
top_gap = 2.5          # 标注与柱顶的间距,数值越大间距越远

# 给所有柱子加顶部标注
for rect in barp1 + barp2 + barp3 + barp4 + barp5 + barp6 + barp7 + barp8:
    height = rect.get_height()
    plt.text(
        rect.get_x() + rect.get_width() / 2.0,
        height + top_gap, # 叠加间距偏移,避免文本贴在柱顶上
        f'{height:.2f}',
        fontsize=custom_fontsize,
        ha='center',
        va='bottom',
        rotation=90
    )

# 调整y轴显示范围,预留足够的顶部空间放标注
all_bar_heights = [r.get_height() for r in barp1 + barp2 + barp3 + barp4 + barp5 + barp6 + barp7 + barp8]
y_max = max(all_bar_heights)
# 系数1.2可根据标注长度调整,标注越长系数设得越大,直到所有文本完整显示
plt.ylim(bottom=0, top=y_max * 1.2)

调参提示:如果标注旋转后长度较长,把plt.ylim里的1.2适当调大(比如1.25、1.3)即可;如果觉得标注和柱顶的距离不合适,直接修改top_gap的数值就行。

内容的提问来源于stack exchange,提问作者I_Al-thamary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.11 16:16:22