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

如何在Seaborn histplot绘制的直方图上标注每个分箱的数值?

实现分箱数值标注的解决方案

当然可以给每个分箱标注数值,只需要在绘制直方图后,遍历每个分箱的矩形元素,获取其位置和计数,再用plt.text()添加标注即可。修改后的完整代码如下:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# Fixing random state for reproducibility
np.random.seed(19680801)

x, y = np.random.rand(2, 100) * 4
ax = sns.histplot(x=x, y=y, bins=4, binrange=[[0, 4], [0, 4]])

# 遍历每个分箱的矩形元素,添加数值标注
for patch in ax.patches:
    # 获取分箱的计数(高度)
    count = patch.get_height()
    # 跳过计数为0的分箱(避免显示0)
    if count == 0:
        continue
    # 获取分箱的中心位置坐标
    x_center = patch.get_x() + patch.get_width() / 2
    y_center = patch.get_y() + patch.get_height() / 2
    # 添加文本标注,设置对齐方式和字体大小
    ax.text(x_center, y_center, int(count), ha='center', va='center', fontsize=10)

plt.show()

关键部分说明:

  • ax = sns.histplot(...):保存直方图绘制的Axes对象,方便后续操作
  • ax.patches:包含直方图中所有分箱的矩形元素,每个元素对应一个分箱
  • patch.get_height():获取该分箱的计数(即条形高度)
  • 通过patch.get_x()、patch.get_width()、patch.get_y()计算分箱的中心位置,保证标注居中
  • ax.text():在计算好的位置添加计数文本,设置对齐参数确保显示效果

运行代码后,每个有数据的分箱中心位置都会显示对应的计数数值,达到你想要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:23:13