我生成了一个条形图,如何在每个条上显示条的值?
当前情节:
我想得到什么:
我的代码:
import os import numpy as np import matplotlib.pyplot as plt x = [u'INFO', u'CUISINE', u'TYPE_OF_PLACE', u'DRINK', u'PLACE', u'MEAL_TIME', u'DISH', u'NEIGHBOURHOOD'] y = [160, 167, 137, 18, 120, 36, 155, 130] fig, ax = plt.subplots() width = 0.75 # the width of the bars ind = np.arange(len(y)) # the x locations for the groups ax.barh(ind, y, width, color="blue") ax.set_yticks(ind+width/2) ax.set_yticklabels(x, minor=False) plt.title('title') plt.xlabel('x') plt.ylabel('y') #plt.show() plt.savefig(os.path.join('test.png'), dpi=300, format='png', bbox_inches='tight') # use format='svg' or 'pdf' for vectorial pictures
更新:现在有一个内置的方法!向下滚动几个答案到“matplotlib 3.4.0 中的新功能”。
如果您不能升级那么远,则不需要太多代码。添加:
for i, v in enumerate(y): ax.text(v + 3, i + .25, str(v), color='blue', fontweight='bold')
结果:
y 值v既是 x 位置又是 的字符串值ax.text,并且方便地,条形图的每个条的度量为 1,因此枚举i是 y 位置。
v
ax.text
i