Eric Firing wrote:
>
>>
>> Thanks Eric - I just wanted to make sure I wasn't missing some
>> obvious way to do it.
>
>
>
> Jeff,
>
> 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
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 *
def func3(x,y):
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')
clabel(c,l,fmt='%4.2f')
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
axis([-3,3,-3,3])
show()
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.
-Jeff
--
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
|