text on top just below xticks

trans = blend_xy_sep_transform(ax.transAxes, ax.transAxes)

    >>
    >> This is basically a no-op; if the axes transform is the one you
    >> want, just use it
    >>
    >> ax.text(0.5, 1, "My Title", ha='center',
    >> va='top',transform=ax.transAxes)

    > Can't do that. Puts the text too high, runs into the top
    > bar and the tickmarks. Can't apply the offset to

Oh right (slaps self on head). You need to set the offset on the
transform and you can't apply that to ax.transAxes since it will screw
up the axes transform... So you need to copy it, or duplicate it.
blend is one way to copy the transform, but there is a better way --
just mimic what axes.py does when it creates it.

  from matplotlib.transforms import unit_bbox, get_bbox_transform
  trans = get_bbox_transform(unit_bbox(), ax.bbox)

this transforms the (0,0), (1,1) bounding box to the axes bounding
box. You can then set the offset of this transform as before...

JDH

Excellent! Thanks again!

···

  from matplotlib.transforms import unit_bbox, get_bbox_transform
  trans = get_bbox_transform(unit_bbox(), ax.bbox)

--
Charles R. Twardy