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

如何在matplotlib.pyplot直方图的每个柱上方显示数据点数量

在Matplotlib直方图柱顶显示精确计数

Matplotlib没有直接的参数一键实现这个需求,但可以通过直方图返回的统计数据手动添加文本标签,步骤很简单:

  1. 调用plt.hist()时,接收它返回的三个核心值:

    • n:每个区间内的样本数量数组
    • bins:区间边界数组
    • patches:每个柱子的图形对象
  2. 遍历每个柱子,计算柱子的中心位置,然后在柱顶上方添加对应数量的文本。

完整代码示例

import matplotlib.pyplot as plt
import numpy as np

# 模拟受访者年龄数据
ages = np.random.randint(18, 70, size=200)

# 绘制直方图,接收返回值
n, bins, patches = plt.hist(ages, edgecolor='black')

# 遍历每个柱子,添加计数标签
for i in range(len(patches)):
    # 获取柱子的中心x坐标
    x = patches[i].get_x() + patches[i].get_width() / 2
    # 获取柱子的高度(即样本数量)
    y = n[i]
    # 在柱顶上方添加文本,水平居中
    plt.text(x, y + 1, f'{int(y)}', ha='center', fontsize=10)

# 设置图表标题和轴标签
plt.title('受访者年龄分布')
plt.xlabel('年龄区间')
plt.ylabel('人数')

plt.show()

关键细节说明

  • plt.text()的ha='center'让文本在柱子上方水平居中
  • y + 1是给文本加了一点偏移,避免和柱子顶部贴得太近(可根据你的数据调整偏移量)
  • int(y)把计数转成整数,因为样本数量肯定是整数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:54:49