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

如何为Seaborn的countplot添加计数数值?

嗨,你说的没错——Seaborn的countplot确实没有像heatmap里annot=True那样的内置参数直接显示每个柱子的计数值,但咱们完全可以用简单的代码手动实现这个功能,两种常用方法分享给你:

方法1:遍历柱子手动添加文本(兼容所有Matplotlib版本)

这种方法通用且灵活,不管你用的是哪个版本的Matplotlib都能生效。核心思路是先画出countplot,然后遍历每个柱子对象,获取它的高度(也就是计数值),再把数值文本添加到柱子的合适位置:

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集(你可以替换成自己的数据)
tips = sns.load_dataset("tips")

# 绘制基础countplot
ax = sns.countplot(x="day", data=tips)

# 遍历每个柱子,添加计数值文本
for p in ax.patches:
    # 获取柱子的高度(即该类别的样本数量)
    count = p.get_height()
    # 计算文本的x坐标(柱子中心)和y坐标(柱子顶部上方一点)
    x_pos = p.get_x() + p.get_width() / 2
    y_pos = count
    # 添加文本,设置居中对齐、垂直底部对齐
    ax.text(x_pos, y_pos, f"{int(count)}", ha="center", va="bottom")

plt.show()

这段代码里,ax.patches包含了图中所有柱子的图形对象,get_height()能直接拿到每个类别的计数,ha="center"让文本在柱子上方居中,va="bottom"避免文本和柱子顶部重叠。

方法2:用barplot+bar_label简化操作(Matplotlib 3.4+适用)

如果你的Matplotlib版本在3.4及以上,推荐用这个更简洁的方法:先手动统计每个类别的计数,再用barplot绘制,最后调用bar_label一键添加数值标签:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

# 先统计每个类别的样本数量
count_data = tips["day"].value_counts().reset_index()
count_data.columns = ["day", "sample_count"]

# 用barplot绘制统计结果
ax = sns.barplot(x="day", y="sample_count", data=count_data)

# 一键添加柱子标签
ax.bar_label(ax.containers[0])

plt.show()

ax.containers[0]代表图中的柱子容器,bar_label会自动把每个柱子的y值(也就是我们统计的计数)添加到合适位置,省心又高效。

小拓展:横向countplot的适配

如果你的countplot是横向的(用y参数指定分类变量),只需要稍微调整坐标获取的逻辑:

ax = sns.countplot(y="day", data=tips)

for p in ax.patches:
    # 横向柱子取宽度作为计数
    count = p.get_width()
    # 调整x、y坐标的计算方式
    x_pos = count
    y_pos = p.get_y() + p.get_height() / 2
    ax.text(x_pos, y_pos, f"{int(count)}", ha="left", va="center")

或者用barplot的横向版本,搭配bar_label时指定label_type="edge"让标签显示在柱子外侧:

ax = sns.barplot(y="day", x="sample_count", data=count_data)
ax.bar_label(ax.containers[0], label_type="edge")

总之,虽然countplot没有内置的annot参数,但通过这两种方法都能轻松实现显示计数值的需求,根据你的Matplotlib版本和使用习惯选择就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:25:08