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

如何在Seaborn二维histplot的每个分箱中显示计数?

给Seaborn二维直方图添加分箱计数标签

要给sns.histplot(data, x='var1', y='var2')生成的二维直方图每个分箱添加计数标签,可通过以下步骤实现:

  • 绘制二维直方图并获取Axes对象
  • 从直方图的核心绘图元素中提取分箱的计数值与中心坐标
  • 遍历分箱,用annotate添加计数文本

完整示例代码

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据(可替换为你的数据集)
tips = sns.load_dataset("tips")
# 绘制二维直方图
ax = sns.histplot(data=tips, x="total_bill", y="tip")

# 获取直方图的QuadMesh核心元素
quadmesh = ax.collections[0]
# 提取每个分箱的计数值
counts = quadmesh.get_array()
# 提取每个分箱的中心坐标
box_centers = quadmesh.get_offsets()

# 遍历分箱添加计数标签
for center, count in zip(box_centers, counts):
    # 仅为有数据的分箱添加标签,避免空分箱干扰
    if count > 0:
        ax.annotate(
            int(count),
            xy=center,
            ha="center",
            va="center",
            color="white"  # 白色文本匹配热力图样式
        )

plt.show()

关键说明

  • ax.collections[0]:二维直方图的所有分箱视觉元素存储在Axes的collections列表中,第一个元素即为QuadMesh对象
  • get_array():返回每个分箱的频数计数值数组
  • get_offsets():返回每个分箱的中心坐标(x,y)
  • 可按需调整文本样式:比如修改fontsize调整字体大小,或修改color适配不同直方图配色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:02:15