how to use matplotlib contour()?

Grant Edwards grante at visi.com
Wed May 24 23:11:52 CEST 2006


I downloaded examples/contour_demo.py, and it doesn't run.

I've searched both the user guide and the Wiki for "contour"
and got zero hits.

http://matplotlib.sourceforge.net/matplotlib.pylab.html#-contour
appears to be a good reference if you already know how to use
contour(), but I could glean zero clues from it on how to
actually use contour().  For example, it doesn't explain what
the actual formats/types of the parameters.  It explains what
the parameters do, but not what they _are_

For example one parameter is specied as "an array".  No clue as
to how many dimensions or what the axis are.

In another place it says "the X,Y parameters specify the (x,y)
coordinates of a surface".  _How_ do they specify the surface?
Are they just equal length lists of x and y coordinates that
specify len(X) points.  Or do they specify a len(X) x len(Y)
grid of points?

Since I can't find any documentation, I thought I'd just try a
few things.

I've got X,Y,Z values in an Nx3 array named "data" that looks
like this:
        
        X                  Y               Z


[[  4.94958000e+01   3.65706000e+00   1.84600000e-01]
 [  4.94958000e+01   3.66447000e+00   1.82142000e-01]
 [  4.94958000e+01   5.04936000e+00   1.90937000e-01]
 ..., 
 [  2.19844000e+03   9.74210000e+00   8.29735000e-01]
 [  2.19844000e+03   9.93863000e+00   9.82307000e-01]
 [  2.19844000e+03   1.03143000e+01   8.28844000e-01]]
 
If I just pass the array to contour() by doing
"pylab.contour(data)" I get this error:

   Traceback (most recent call last):
     File "./surfplot.py", line 11, in ?
       pylab.contour(data)
     File "/usr/lib/python2.4/site-packages/matplotlib/pylab.py", line 1659, in contour
       ret =  gca().contour(*args, **kwargs)
     File "/usr/lib/python2.4/site-packages/matplotlib/axes.py", line 1244, in contour
       return self._contourHelper.contour(*args, **kwargs)
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 727, in contour
       x, y, z, lev = self._contour_args(False, badmask, origin, extent, *args)
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 544, in _contour_args
       lev = self._autolev(z, 7, filled, badmask)
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 471, in _autolev
       lev = linspace(zmin, zmax, N+2)[1:-1]
     File "/usr/lib/python2.4/site-packages/matplotlib/mlab.py", line 87, in linspace
       dx = (xmax-xmin)/(N-1)
   TypeError: unsupported operand type(s) for -: 'str' and 'str'

I've no clue what that means.  Well, I know what the TypeError
means _literally_, but I've no idea how I'm supposed to
interpret that particular error in regards to what I passed to
contour().

Attempting to use one of the other forms found on the above web
page I pass X,Y,Z vectors to contour() by doing
"pylab.contour(data[:,0],data[:,1],data[:,2])":

   Traceback (most recent call last):
     File "./surfplot.py", line 13, in ?
       pylab.contour(data[:,0],data[:,1],data[:,2])
     File "/usr/lib/python2.4/site-packages/matplotlib/pylab.py", line 1659, in contour
       ret =  gca().contour(*args, **kwargs)
     File "/usr/lib/python2.4/site-packages/matplotlib/axes.py", line 1244, in contour
       return self._contourHelper.contour(*args, **kwargs)
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 727, in contour
       x, y, z, lev = self._contour_args(False, badmask, origin, extent, *args)
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 539, in _contour_args
       x,y,z = self._check_xyz(args[:3])
     File "/usr/lib/python2.4/site-packages/matplotlib/contour.py", line 515, in _check_xyz
       raise TypeError("Input z must be a 2D array.")
   TypeError: Input z must be a 2D array.
   
Which is almost as cryptic a result as my first attempt.

Why would my Z values be a 2D array?

-- 
Grant Edwards                   grante             Yow!  My NOSE is NUMB!
                                  at               
                               visi.com            



More information about the Python-list mailing list