# plotting a contour from dicrete data

Viraj and Jeff -

Maybe one extension of Jeff’s answer.
The process works as long as x, y, and z are 2D arrays of the same size and shape.
Hence, x and y don’t have to form a rectangular grid.

I have used this feature regularly for conformal mapping.
And it makes a lot of sense.
The contour routine simply looks for intersections between x and y values.
Then when it plots it uses the x and y values in the arrays.

So when those are not a rectangular grid, it doesn’t care.
It’s a cool feature.
I can give an example if you want,

Mark

···

Viraj Vajratkar wrote:

hey guys… i got it… u can use contour(x,y,z)… as in
')… and then type out the above… for details about the

parameters x,y,z see… .
http://www.scilab.org/product/man-eng/graphics/contour.htm … so
matplotlib CAN plot a contour from discrete points!!!.. ive tried it

and it works…
Viraj: That only works because x and y describe a rectangular grid. If
x and y described irregularly spaced points, you would need to grid the
data first using one of the methods described on that Cookbook page.

-Jeff

That is very cool, I hadn’t thought of it!

So what you’re saying is that any transformation (a complex distortion) of a regular rectangular grid is fine. The fact that the grid’s ‘pixels’ are four sided quadrilaterals satisfies this condition and the contour algorithm works…

Cheers,

Scott

“Mark Bakker” <markbak@…287…> 7/11/2007 11:36 >>>

Viraj and Jeff -

Maybe one extension of Jeff’s answer.
The process works as long as x, y, and z are 2D arrays of the same size and shape.
Hence, x and y don’t have to form a rectangular grid.
I have used this feature regularly for conformal mapping.
And it makes a lot of sense.
The contour routine simply looks for intersections between x and y values.
Then when it plots it uses the x and y values in the arrays.
So when those are not a rectangular grid, it doesn’t care.
It’s a cool feature.
I can give an example if you want,

Mark

Viraj Vajratkar wrote:

hey guys… i got it… u can use contour(x,y,z)… as in
')… and then type out the above… for details about the
parameters x,y,z see… .
http://www.scilab.org/product/man-eng/graphics/contour.htm … so
matplotlib CAN plot a contour from discrete points!!!.. ive tried it
and it works…
Viraj: That only works because x and y describe a rectangular grid. If
x and y described irregularly spaced points, you would need to grid the
data first using one of the methods described on that Cookbook page.

-Jeff

Please find our Email Disclaimer here–>:
http://www.ukzn.ac.za/disclaimer

Mark Bakker wrote:

Viraj and Jeff -

Maybe one extension of Jeff's answer.
The process works as long as x, y, and z are 2D arrays of the same size and shape.
Hence, x and y don't have to form a rectangular grid.
I have used this feature regularly for conformal mapping.
And it makes a lot of sense.
The contour routine simply looks for intersections between x and y values.
Then when it plots it uses the x and y values in the arrays.
So when those are not a rectangular grid, it doesn't care.
It's a cool feature.
I can give an example if you want,

Mark

Viraj Vajratkar wrote:
> hey guys... i got it... u can use contour(x,y,z)... as in
> ').... and then type out the above.... for details about the
> parameters x,y,z see... .
> http://www.scilab.org/product/man-eng/graphics/contour.htm .... so
> matplotlib CAN plot a contour from discrete points!!!.... ive
tried it
> and it works...
Viraj: That only works because x and y describe a rectangular
grid. If
x and y described irregularly spaced points, you would need to
grid the
data first using one of the methods described on that Cookbook page.

-Jeff

Mark: That is cool - didn't know it could do that. So I guess the proper answer is contour requires x and y to describe a *regular*, but not recessarily rectilinear, grid. I should have known, since there is an example in basemap (ccsm_popgrid.py) that illustrates this.

-Jeff

···

--
Jeffrey S. Whitaker Phone : (303)497-6313
NOAA/OAR/CDC R/PSD1 FAX : (303)497-6449
325 Broadway Boulder, CO, USA 80305-3328