如何在计数图(countplot)的顶部显示计数值?

9

我已经为在板球比赛中担任最多场次裁判员的裁判员绘制了一个计数图。

使用的代码如下:

  ax=matches['umpires'].value_counts().head(10).plot.bar(width=.8) 

这将正确绘制条形图,但每个条形图的确切计数值并未显示在其顶部。如何在每个条形上显示确切数字?

1
可能是Seaborn:countplot()和frequencies的重复问题。 - tmdavison
1个回答

6

我认为你需要通过iterrows循环,并添加新标签:

np.random.seed(100)
L = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
matches = pd.DataFrame(np.random.choice(L, size=(30,1)), columns=['umpires'])
#print (matches)

s = matches['umpires'].value_counts().head(10)
print (s)
C    5
Q    3
E    2
P    2
V    2
Y    2
H    1
D    1
M    1
J    1
Name: umpires, dtype: int64

ax=s.plot.bar(width=.8) 

for i, v in s.reset_index().iterrows():
    ax.text(i, v.umpires + 0.2 , v.umpires, color='red')

graph


尝试了您的建议,但数字并没有上移。因此,在您的编码中,v.umpires + 0.2 对我无效,该值直接在顶部。配置 i 的值可以将数字左右移动,但高度不行。有什么想法为什么会这样? - MaMo
@MaMo - 很难知道,我只是在使用Spyder测试它,版本为matplotlib:2.0.0pandas:0.22.0,并且效果很好。 - jezrael
@MaMo - 回答中的示例数据也有问题吗? - jezrael
不,那些都可以工作。我的编码几乎相同,除了值之外,如果我打印你命名为s的内容,我也会得到一个看起来像你的列表。不知道哪里出了问题,特别是因为配置i是有效的。 - MaMo
@MaMo - 很抱歉,我不知道 :( - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接