I would like to 'watermark' a plot. That is, display an image 'under'
several lines. I would like this watermark to be static and not
change location, shape, or size while allowing for the lines to be
zoomed and panned.
I'm doing this all using the API (not pylab). I've tried using
figure.figimage, but that only draws the watermark 'outside' the plot
area. Fair enough. I've tried creating an axes object on top of my
existing axes (actually my 'existing axes' is already four axes
objects stacked on top of each other with some sharex magic happening)
and using axes.imshow on that. While I do get the image, it doesn't
display or behave as expected.
Essentially the image displays in front of my first axes object, and
no amount of twiddling with axes.set_zorder was affecting it. Things
plotted on the subsequent axes plot on top of the image. This
reflects the axes creation sequence, but zorder doesn't seem to be
doing anything. I've also explicitly set the zorder of the image, but
didn't see any effect there either.
Adding to my confusion, the 'watermark' axes' size is wrong. When I
create the axes object, I set the size using rect=axes1.get_position()
in the figure.add_axes() call. The other 'real' axes use the same
thing, but manage to get the size correct. The watermark axes is
essentially the size of my image.
Does anyone know what I've missed? I've hit the wiki, I've exercised
my Google-fu, but I don't see any examples of what I'm trying to do.
I'm using mpl 0.90.0 at the moment ... but if pressed we can upgrade
to a newer release (our reason for not keeping up with releases is the
old 'not broken, don't fix'). At the moment I'm not too worried about
keeping the axes static while panning and zooming ... I've already
customized backend_bases and I can skip the watermark axes when the
zoom and pan events are processed. But it sure would be nice to be
able to display this image (and later, some static text boxes that
don't move with the plots too) in the appropriate location.
Thanks for any suggestions,