
import matplotlib.pyplot as plt

plt.ion()       # turn on interactive mode in order to have labels before 'show'
fig = plt.figure()
ax = fig.add_subplot(111)
plt.draw()      # redraw current figure in order to have meaningful labels

print "number of (upper and lower) xtick-lines", len(ax.get_xticklines())
print "number of xtick-labels", len(ax.get_xticklabels())

# select one label (wich is a mpl-text instance)
t = ax.get_xticklabels()[1]
print "label >%s< at position " % (t.get_text()), t.get_position()

# select corresponding lower xtick-line
l = ax.get_xticklines()[2]
print "line at position", l.get_data()

# text in axes instance (like plt.text)
mytext = ax.text(t.get_position()[0], t.get_position()[1], "mytext",
                 color='red', fontsize=20,
                 horizontalalignment='center',
                 verticalalignment='bottom')

point_ax = t.get_position()

# transform point to coordinates relative to
#   fig.get_size_inches() * fig.get_dpi()
point_screen = ax.transAxes.transform_point(point_ax)

# transform to figure coordinates (between 0 and 1) using the inverse
#   transformation of the screen coordinate
point_fig = fig.transFigure.inverted().transform_point(point_screen)

# text in figure (like plt.figtext)
myfigtext = fig.text(point_fig[0], point_fig[1], "myfigtext",
                     color='blue', fontsize=15,
                     horizontalalignment='center',
                     verticalalignment='bottom')

plt.ioff()
plt.show()
