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

求助:如何为pandas生成的柱状图添加精确数值标注?

解决柱状图顶部显示精确数值的问题

嘿,我懂你这种明明画了柱状图却看不到关键数值的困扰!别担心,这是pandas默认绘图的一个小缺口,咱们只需要在现有代码基础上添加几行标注逻辑就能搞定。

完整解决方案代码

# 你的原始绘图代码
ax = sos_df['Status'].value_counts().plot(kind='bar', figsize=(10,7), color="coral", fontsize=13)

# 核心:遍历每个柱子,添加数值标注
for patch in ax.patches:
    # 获取当前柱子的高度(对应统计的数值)
    bar_height = patch.get_height()
    # 在柱子顶部居中位置添加文本
    ax.text(
        patch.get_x() + patch.get_width() / 2,  # 文本的x坐标:柱子中心位置
        bar_height,  # 文本的y坐标:柱子顶部
        f'{int(bar_height)}',  # 显示的数值(如果是小数可以用round(bar_height, 2)保留两位)
        ha='center',  # 水平居中对齐
        va='bottom',  # 垂直对齐在柱子顶部,避免重叠
        fontsize=12,
        color='darkslategray'  # 可选:设置文本颜色,和柱子区分开
    )

# 可选:优化图表样式(按需调整)
ax.set_title('Status 分类统计', fontsize=15)
ax.set_xlabel('状态类型', fontsize=14)
ax.set_ylabel('数量', fontsize=14)

# 显示图表
plt.show()

关键代码解释

  • ax.patches:获取图表中所有的柱子对象,每个柱子都是一个Patch实例
  • patch.get_x() + patch.get_width()/2:计算柱子的中心x坐标,确保文本居中显示
  • ha='center' & va='bottom':分别控制文本的水平居中、垂直对齐在柱子顶部,避免和柱子或其他元素重叠
  • 如果你的数值是小数,把int(bar_height)改成round(bar_height, 2)就能保留两位小数显示

这样修改后,每个柱子的顶部就会清晰显示对应的精确数值啦!如果需要调整文本的大小、颜色或者位置,直接修改ax.text里的参数就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:09:28