pandas 使用 matplotlib 在条形图上添加值标签

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/36111556/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 00:54:25  来源:igfitidea点击:

Adding value labels on a bar chart using matplotlib

pythoncsvpandasmatplotlibbar-chart

提问by ldevyataykina

When I print

当我打印

graph_by_users = users.pivot(index='address', columns='used_at', values='users')

I get

我得到

              address  used_at   time online
0               am.ru     2014    114.741944
1               am.ru     2015     50.945000
2             auto.ru     2014   2533.983889
3             auto.ru     2015   1923.157500
4            avito.ru     2014  23473.097500
5            avito.ru     2015  24357.936389
6       avtomarket.ru     2014     29.680278
7       avtomarket.ru     2015     26.646389
8   cars.mail.ru/sale     2014     58.737778
9   cars.mail.ru/sale     2015     46.466111
10            drom.ru     2014   3059.709722
11            drom.ru     2015   2695.590000
12              e1.ru     2014   7966.210278
13              e1.ru     2015   7767.182500
14        irr.ru/cars     2014     61.720278
15        irr.ru/cars     2015     37.132778

I need to print bar chart

我需要打印条形图

ax = graph_by_duration.plot.bar(width=0.5, ax=axes[0])
ax1 = graph_by_duration.plot.bar(width=0.8)
rects = ax1.patches
labels = ["%d" % i for i in time['time online']]
for rect, label in zip(rects, labels):
    height = rect.get_height()
    ax1.text(rect.get_x() + rect.get_width()/2, height + 5, label,     
    ha='center', va='bottom')

my_graphIt put values to 2014and after to 2015. But it's wrong, because in my dataframe means are mixed

我的_graph它将值放在 to2014和之后2015。但这是错误的,因为在我的数据框中手段是混合的

回答by MaxU

I think you've mixed up your labels. Try this:

我认为你混淆了你的标签。尝试这个:

ax = graph_by_duration.plot(kind='bar', width=0.5)
[label.set_rotation(25) for label in ax.get_xticklabels()]

labels = [int(round(graph_by_duration.loc[i, y]))
          for y in graph_by_duration.columns.tolist()
          for i in graph_by_duration.index]

for rect, label in zip(rects, labels):
    height = rect.get_height()
    ax.text(rect.get_x() + rect.get_width()/2, height + 5, label,     
    ha='center', va='bottom', rotation=15)

plt.show()

enter image description here

在此处输入图片说明