【问题标题】:How to show the count values on the top of a bar in a countplot?如何在计数图中的条形顶部显示计数值?
【发布时间】:2017-06-28 19:03:03
【问题描述】:

我已经为在板球锦标赛中裁判最多比赛次数的裁判绘制了一个计数图。 使用的代码是:

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

这会正确绘制条形图,但计数的确切值不会显示在每个条形的顶部。

如何在每条柱上显示准确的数字?

【问题讨论】:

标签: python pandas matplotlib seaborn


【解决方案1】:

我认为您需要循环 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')

【讨论】:

  • 尝试了您的建议,但数字没有上升。因此,在您的编码中v.umpires + 0.2 对我不起作用,该值直接位于顶部。配置i 的值会向左或向右移动数字,但运气不好。知道为什么吗?
  • @MaMo - 很难知道,我只是在 spyder 中使用 matplotlib: 2.0.0pandas: 0.22.0 测试它并且运行良好。
  • @MaMo - 来自答案的样本数据也有问题?
  • 不,那些工作。除了值之外,我的编码几乎相同,如果我打印您命名为 s 的内容,我还会得到一个看起来像您的列表。不知道出了什么问题,尤其是因为配置 i 有效
  • @MaMo - 不幸的是我不知道:(
猜你喜欢
  • 2019-08-01
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 2014-09-21
  • 2013-02-20
  • 2021-12-05
  • 2020-02-07
相关资源
最近更新 更多