Eric Firing wrote:
Thanks Eric - I just wanted to make sure I wasn't missing some obvious way to do it.
A possible trick would be to make a very skinny subplot (using custom sizing and positioning) and use contourf itself to make the colorbar in it. I think this is actually the way I am doing it in Matlab. (A colleague and I greatly customized the Matlab colorbar for this sort of thing a long time ago.)
Eric/Phil: Here is a hack that produces colorbars with discrete contour intervals for use with contourf. It's in the form of a patch for pylab.py and figure.py (based on 0.83.2). When pylab.colorbar is called, it checks to see if the current image was created by contourf, and if so calls figure.colobar_contourf (which uses contourf instead of imshow to make the colorbar). Here's a test script:
"""test script for contourf colorbar"""
from pylab import *
return (1- x/2 + x**5 + y**3)*exp(-x**2-y**2)
dx, dy = 0.05, 0.05
X,Y = meshgrid(arange(-3.0,3.0001,dx),arange(-3.0,3.0001,dy))
Z = func3(X, Y)
levels = linspace(-1.2,1.2,13)
l,c = contour (X, Y, Z, levels, linewidths=0.5, colors='k')
l,c = contourf(X, Y, Z, levels, cmap=cm.jet)
colorbar(tickfmt='%4.2f',orientation='horizontal') # horiz colorbar
colorbar(tickfmt='%4.2f',orientation='vertical') # vert colorbar
This doesn't address the other two of Phil's requests (triangles at the ends, and constant intervals on the colorbar for non-constant contour levels), but I think it's a start.
pylab.patch (479 Bytes)
figure.patch (3.32 KB)
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/CDC R/CDC1 Email : Jeffrey.S.Whitaker@...259...
325 Broadway Office : Skaggs Research Cntr 1D-124
Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg