John Hunter wrote:
In the last figure 4 of contour_demo.py, the positioning of the
vertical colorbar looks too low. I would expect it to align roughly
with the vertical extent of the image axes. Is this intentional,
configurable, or a bug?
I would call it a design deficiency. In mpl as in matlab, automatic colorbar positioning is done in a very simple way: an existing axes is shrunken and a colorbar is added using liberated space, and positioned relative to the shrunken axes. When a colorbar is added, the same thing happens, and the first colorbar is not repositioned to take into account the new size and position of the master axes. The key point is that the positioning is done once for each colorbar--it is static.
The nicest way to fix this might require something that I think you have deliberately and wisely left out of mpl so far: a layout engine, like the Tk packer etc.
Simpler methods might be devised. I am not inclined to spend time on this right now, however, because (1) the problem only arises when using two colorbars, which is probably not a very common use case, and (2) it is easily fixed by manually repositioning the colorbars, so it is not a problem for publication-quality plots. Also (3) getting the aspect-ratio handling working has been enough of a struggle that I am reluctant to risk destabilizing it right now (under the optimistic assumption that it actually is stable now), and (4) I think there are much more important things that need work.
Maybe what I should do is add the manual positioning to the demo so the plot looks nice, and serves as an example of how to do the positioning.
Also, in many of the contour examples, the text labels overlap the
contour lines, especially when the text labels are large. Should we
revisit the code which removes line segments that overlap the text
code to see if we can improve this a bit?
To do this well might require quite a different strategy than the present one; the segment removal might need to be done at drawing time, so that it could adapt to the scale of the plot when it is drawn. The problem is that the lines scale with the figure size but the labels don't. So one might need a "LabelledLineCollection" artist instead of using separate LineCollection and Text artists.