ax.annotate(z[i] + ' ' + 'Volume: ' + str(v[i]), (mdates.date2num(x[i]), y[
    i]), xytext=(15, 15), textcoords='offset points', arrowprops=dict(
    arrowstyle='-|>'), rotation=90)
Annotating gracefully pandas plot with texts that do not overlap