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
提问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')
It put values to
2014
and after to 2015
. But it's wrong, because in my dataframe means are mixed
回答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()