Попробуйте использовать ax.text () и l oop вместо координат.
Установите аргумент ключевого слова transform в ax.transData, чтобы передаваемые координаты соответствовали данные в вашей оси. в качестве альтернативы вы можете использовать ax.transAxes или fig.transFigure.
fig = plt.figure()
ax = plt.axes()
ax.bar(x, y)
# assuming that the you want the y value above the bar
offset_y = 2 # offset to place the text above the bar. Chosen number here is arbitrary
for i range(x):
ax.text(i, y[i]+offset_y, y[i],
va='center',
ha='center',
transform=ax.transData
)
ax.set_xticks(rotation=30, color='green')
ax.set_yticks(rotation=30, color='red')
plt.show()