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

Python新手求助:在Matplotlib水平条形图末端添加数值

解决水平条形图末端显示数值的问题

嘿,我来帮你搞定这个问题!你代码里的核心问题是调用y.text()的时候搞错了对象——这里的y是存储数值的列表,根本没有text()方法,自然没法绘制文本啦。

我给你调整了代码,把数值准确放在每个水平条形的末端,你可以直接用:

import os
import numpy as np
import matplotlib.pyplot as plt

x = ['Buildings', 'Forest', 'Glaciar', 'Moutain', 'Sea', 'Street']
y = [33.41, 90.72, 37.79, 60.95, 51.76, 59.88]
x_pos = [i for i, _ in enumerate(x)]

# 先绘制条形图
plt.barh(x_pos, y)

# 遍历每个数值,添加文本标签
for i, v in enumerate(y):
    # x坐标:条形长度 + 一点偏移(避免和条形重叠)
    # y坐标:对应条形的y轴位置
    # 文本内容:当前数值,保留两位小数更美观
    plt.text(v + 1, i, f"{v:.2f}", va='center', color='blue', fontweight='bold')

plt.ylabel("Cenários")
plt.xlabel("Percentagem de acerto %")
plt.title("Taxa de Reconhecimento")
plt.yticks(x_pos, x)
# 稍微调整x轴范围,避免最右边的数值被截断
plt.xlim(0, max(y) + 10)
plt.show()

关键调整点:

  • 先绘制条形图,再添加文本标签,确保文本在条形上方显示
  • 用plt.text()来绘制文本,v + 1给数值加一点偏移,避免和条形边缘贴太紧;i对应条形的y轴位置,保证垂直居中
  • 用f"{v:.2f}"格式化数值,保持和原数据一致的小数位数,显示更整洁
  • 新增plt.xlim(0, max(y) + 10),防止最右侧的数值超出图表范围被截断

这样运行后,每个条形的末端就会清晰显示对应的百分比数值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:23:14