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

如何在Seaborn条形图的条形中间添加匹配颜色的数值标签

在Seaborn横向条形图中添加同色数值标签

直接给你修改后的完整代码,能实现每个条形中间显示对应数值,且标签颜色和条形一致:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt  # 原代码漏了这个导入,必须补上

VAL = [8, 4, 5, 20]
objects = ['h', 'b', 'c', 'a']
y_pos = np.arange(len(objects))

cmap = plt.get_cmap('RdYlGn_r')
norm = plt.Normalize(vmin=min(VAL), vmax=max(VAL))
ax = sns.barplot(x=VAL, y=objects, hue=VAL, palette='RdYlGn_r', dodge=False)

# 核心:遍历每个条形,添加同色数值标签
for patch in ax.patches:
    # 获取条形的宽度(对应VAL的数值)、中心y坐标、填充颜色
    width = patch.get_width()
    y = patch.get_y() + patch.get_height() / 2
    bar_color = patch.get_facecolor()
    
    # 在条形中间位置添加文本标签
    ax.text(width / 2, y, f'{int(width)}', 
            ha='center', va='center', color=bar_color)

plt.yticks(y_pos, objects)
plt.show()

关键步骤说明

  • 补导入matplotlib.pyplot:原代码里用到了plt.get_cmap但没导入,运行会报错,必须加上
  • 遍历ax.patches:每个patch对应一个条形,通过它能获取条形的尺寸、颜色等属性
  • 计算标签位置:横向条形的x轴是数值,所以标签x位置设为宽度的一半(条形中间),y位置取条形的垂直中心
  • 设置标签颜色:直接用patch.get_facecolor()获取条形的填充色,让标签和条形颜色一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:40:59