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

如何在Seaborn中为水平条形图添加数值标签

如何为Seaborn水平条形图添加数值标签

没问题,这事儿其实很简单——我们只需要在绘制完条形图后,遍历每个条形元素,用Matplotlib的text()方法把数值标签贴上去就行。下面是整合了标签添加逻辑的完整代码:

import seaborn as sns
import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize=(6, 15))
crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
# 绘制水平条形图
sns.barplot(x="total", y="abbrev", data=crashes, label="Total", color="b")
ax.set(xlim=(0, 24), ylabel="", xlabel="Automobile collisions per billion miles")

# 核心:添加数值标签
for p in ax.patches:
    # 获取当前条形的宽度(也就是对应的total数值)
    bar_width = p.get_width()
    # 设置标签的位置:x轴在条形右侧偏移一点,y轴在条形垂直中心
    ax.text(
        bar_width + 0.2,  # x坐标,+0.2避免标签和条形重叠
        p.get_y() + p.get_height() / 2,  # y坐标,垂直居中
        f"{bar_width:.1f}",  # 格式化数值,保留1位小数
        ha="left", va="center"  # 文本对齐方式:水平左对齐,垂直居中
    )

plt.show()

关键步骤解释:

  • ax.patches:这个属性会返回图中所有的条形元素,我们遍历每个元素就能逐个添加标签
  • p.get_width():因为是水平条形图,条形的宽度就对应x轴的数值(也就是total字段的值)
  • p.get_y() + p.get_height()/2:计算条形的垂直中心位置,让标签垂直居中显示
  • f"{bar_width:.1f}":用f-string格式化数值,你可以根据需求调整小数位数,比如.0f就是整数显示
  • 偏移量0.2:可以根据你的图表尺寸调整,确保标签和条形之间有合适的间距,不会挤在一起

这样处理后,每个条形的右侧都会显示对应的具体数值,让图表的可读性大大提升~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:34:15