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

Python Pandas链式调用:如何为柱状图添加文本标签?

在Pandas链式调用中为柱状图添加顶部数值标签

要给柱状图的每个柱子顶部添加数值标签,核心思路是获取绘图后的Matplotlib Axes对象,遍历所有柱子并添加文本标注。以下是修改后的完整代码:

# 执行数据处理并绘制柱状图,同时获取Axes对象
ax = (
    df
    .groupby(['col1','col2'], dropna=False)
    [['col1', 'col2']]
    .size()
    .unstack()
    .plot(kind='bar', figsize=(8,8))
)

# 遍历每个柱子,添加顶部数值标签
for patch in ax.patches:
    height = patch.get_height()
    # 仅对有数值的柱子添加标签(跳过NaN对应的空柱子)
    if height > 0:
        ax.text(
            patch.get_x() + patch.get_width() / 2,  # 标签水平居中
            height,  # 标签位于柱子顶部
            f'{int(height)}',  # 格式化显示数值(转为整数)
            ha='center',  # 水平对齐方式:居中
            va='bottom'   # 垂直对齐方式:底部(紧贴柱子顶部)
        )

代码说明:

  • 获取Axes对象:将plot()方法返回的Matplotlib Axes对象赋值给ax,通过它可以操作绘图的所有元素。
  • 遍历柱子:ax.patches包含了柱状图中所有的柱子元素,逐个遍历处理。
  • 过滤空柱子:通过height > 0判断跳过NaN对应的空柱子,避免显示无效的0标签。
  • 添加文本标签:使用ax.text()在每个柱子的中心顶部位置添加数值,通过ha和va参数确保标签对齐美观。

如果你的数据包含浮点数,可以把格式化字符串改为f'{height:.2f}'来保留两位小数,按需调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:56:50