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

Matplotlib柱状图顶部数值显示为指数形式如何转为普通数字

Matplotlib横向柱状图柱顶标签科学计数法修改方案

问题现象

  • 绘制横向柱状图时,已通过ax.get_xaxis().get_major_formatter().set_scientific(False)关闭X轴刻度的科学计数法显示
  • 调用ax.bar_label()生成的柱顶数值标签仍以指数形式展示,需要改为普通纯数字格式

原实现代码:

fig, ax = plt.subplots()
fig.set_size_inches(15,2.5)
ax.barh(y = fig_1['member_casual'], width = fig_1['ride_id'], color = ['orange','lightcoral'], height = 0.8)
ax.set_xlabel("No. of rides")
ax.set_xlim(xmin = 0, xmax = 3500000)
ax.set()
ax.get_xaxis().get_major_formatter().set_scientific(False)

for bars in ax.containers:
    ax.bar_label(bars)
fig.tight_layout()

原因说明

坐标轴的科学计数法配置仅对轴刻度生效,不会自动应用到bar_label生成的柱体标签,标签的数字格式需要单独配置。

修复方法

在调用ax.bar_label()时传入fmt参数,明确指定数字格式化规则即可:

  • 纯整数无分隔格式:使用fmt='%d',适配骑行次数这类整数计数场景
  • 带千位分隔符易读格式:使用fmt='{:,.0f}',大数字展示更清晰

修改后的标签添加代码段:

for bars in ax.containers:
    # 按需选择对应fmt配置即可
    ax.bar_label(bars, fmt='%d')
    # 千位分隔符版本替换为下面这行
    # ax.bar_label(bars, fmt='{:,.0f}')

如果统计值存在小数,将fmt替换为对应小数位数的格式即可,比如保留2位小数用fmt='%.2f'。
另外原代码中空的ax.set()语句没有实际作用,可以直接删除。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:54:26