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.
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/CDC R/CDC1 Email : Jeffrey.S.Whitaker@...
325 Broadway Office : Skaggs Research Cntr 1D-124
Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg