["python","matplotlib","bar-chart","plot-annotations"]
How to display the value on horizontal bars

I generated a bar plot, how can I display the value of the bar on each bar? Current plot: What I am trying to get: My code: 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
New in matplotlib 3.4.0 There is now a built-in Axes.bar_label helper method to auto-label bars: fig, ax = plt.subplots() bars = ax.barh(indexes, values) ax.bar_label(bars) Note that for grouped/stacked bar plots, there will multiple bar containers, which can all be accessed via ax.containers: for bars in ax.containers: ax.bar_label(bars) More details: How to add thousands separators (commas) to labels How to apply f-strings to labels How to add spacing to labels