fig, ax = plt.subplots()
ax.plot(x, y, 'ro', markersize=23)
offset = 1.0
ax.set_xlim(min(x) - offset, max(x) + offset)
ax.set_ylim(min(y) - offset, max(y) + offset)
for x, y in zip(x, y):
    text = str(y)
fontsize, aspect_ratio = 12, 0.5
width = len(text) * aspect_ratio * fontsize
height = fontsize
a = ax.annotate(text, xy=(x, y), xytext=(-width / 2.0, -height / 2.0),
    textcoords='offset points')
plt.show()
Anchor or lock text to a marker in Matplotlib