for count, x in zip(counts, bin_centers):
    ax.annotate(str(count), xy=(x, 0), xycoords=('data', 'axes fraction'),
        xytext=(0, -18), textcoords='offset points', va='top', ha='center')
percent = '%0.0f%%' % (100 * float(count) / counts.sum())
ax.annotate(percent, xy=(x, 0), xycoords=('data', 'axes fraction'), xytext=
    (0, -32), textcoords='offset points', va='top', ha='center')
plt.subplots_adjust(bottom=0.15)
plt.show()
Matplotlib - label each bin