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

条形图标注问题:如何去除条形内部的多余数字?

水平条形图内部多余数字的解决方法

问题原因分析

你遇到的条形内部出现大量数字的情况,大概率是x轴的刻度标签被条形覆盖——你的代码只隐藏了x轴的刻度线(ax.xaxis.set_ticks_position('none')),但没有隐藏刻度标签,当条形宽度较大时,这些标签就会出现在条形内部。另外也需要确认分组后的group_df是否每个data1(产品)对应唯一的data2(销售额),避免因重复数据生成重叠条形导致多重标注。

解决方案

1. 隐藏x轴刻度标签

在去掉x轴刻度线的代码后,添加一行代码隐藏x轴的刻度标签:

# 隐藏x轴刻度标签
ax.set_xticklabels([])

如果完全不需要显示x轴的任何元素,也可以直接关闭x轴:

ax.xaxis.set_visible(False)

2. 确保分组数据唯一

确认group_df的分组逻辑正确,比如使用groupby后聚合(如sum()),确保每个产品对应唯一的销售额数值:

# 示例:按data1分组并求和data2
group_df = original_df.groupby('data1')['data2'].sum().reset_index()

修改后的完整代码

name = group_df['data1']
acw = group_df['data2']

# fig size
fig, ax = plt.subplots(figsize=(16,9))

# horizontal bar
ax.barh(name, acw)

# Remove axes splines
for s in ['top', 'bottom', 'left', 'right']:
  ax.spines[s].set_visible(False)

# remove x, y ticks
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')

# 新增:隐藏x轴刻度标签
ax.set_xticklabels([])

# add padding between axes and labels
ax.xaxis.set_tick_params(pad=5)
ax.yaxis.set_tick_params(pad=10)

# add x, y gridlines
# ax.grid(visible = True, color ='black',
        # linestyle ='-.', linewidth = 0.5,
        # alpha = 0.2)

# show top values
ax.invert_yaxis()

# add annotation to bars
for i in ax.patches:
    plt.text(i.get_width()+0.2, i.get_y()+0.5, 
             str(round((i.get_width()), 2)),
             fontsize = 10, fontweight ='bold',
             color ='blue')

# add plot title
ax.set_title('Data',
             loc ='left', )

# show plot
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:39:53