contour

contour — level curves on a 3D surface

Calling sequence

contour(x,y,z,nz,[theta,alpha,leg,flag,ebox,zlev])  
contour(x,y,z,nz,<opt_args>)  

Parameters

x,y : two real row vectors of size n1 and n2.
z : real matrix of size (n1,n2), the values of the function.
nz

: the level values or the number of levels.

-

If nz is an integer, its value gives the number of level curves equally spaced from zmin to zmax as follows:



 z= zmin + (1:nz)*(zmax-zmin)/(nz+1)
   
                

Note that the zmin and zmax levels are not drawn (generically they are reduced to points) but they can be added with



 [im,jm] = find(z == zmin);     // or zmax 
 plot2d(x(im)',y(jm)',-9,"000")
   
                
- If nz is a vector, nz(i) gives the value of the ith level curve. Note that it can be useful in order to see zmin and zmax level curves to add an epsilon tolerance: nz=[ zmin+%eps,..,zmax-%eps].
<opt_args> : a sequence of statements key1=value1, key2=value2, ... where keys may be theta,alpha,leg, flag, ebox,zlev (see below). In this case, the order has no special meaning.
theta, alpha : real values giving in degree the spherical coordinates of the observation point.
leg : string defining the captions for each axis with @ as a field separator, for example "X@Y@Z".
flag

: a real vector of size three flag=[mode,type,box].

mode

: string (treatment of hidden parts).

mode>0 the hidden parts of the surface are removed and the surface is painted with color mode.
mode=0 the hidden parts of the surface are drawn.
mode<0 only the shadow of the surface is painted with color or pattern id -mode. Use xset() to see the meaning of the ids.
type

: an integer (scaling).

type=0 the plot is made using the current 3D scaling (set by a previous call to param3d, plot3d, contour or plot3d1).
type=1 rescales automatically 3d boxes with extreme aspect ratios, the boundaries are specified by the value of the optional argument ebox.
type=2 rescales automatically 3d boxes with extreme aspect ratios, the boundaries are computed using the given data.
type=3 3d isometric with box bounds given by optional ebox, similarily to type=1
type=4 3d isometric bounds derived from the data, to similarilytype=2
type=5 3d expanded isometric bounds with box bounds given by optional ebox, similarily to type=1
type=6 3d expanded isometric bounds derived from the data, similarily to type=2
box

: an integer (frame around the plot).

box=0 nothing is drawn around the plot.
box=1 unimplemented (like box=0).
box=2 only the axes behind the surface are drawn.
box=3 a box surrounding the surface is drawn and captions are added.
box=4 a box surrounding the surface is drawn, captions and axes are added.
ebox : used when type in flag is 1. It specifies the boundaries of the plot as the vector [xmin,xmax,ymin,ymax,zmin,zmax].
zlev : real number.

Description

contour draws level curves of a surface z=f(x,y). The level curves are drawn on a 3D surface. The optional arguments are the same as for the function plot3d (except zlev) and their meanings are the same. They control the drawing of level curves on a 3D plot. Only flag(1)=mode has a special meaning.

mode=0: the level curves are drawn on the surface defined by (x,y,z).
mode=1: the level curves are drawn on a 3D plot and on the plan defined by the equation z=zlev.
mode=2: the level curves are drawn on a 2D plot.

You can change the format of the floating point number printed on the levels by using xset("fpf",string) where string gives the format in C format syntax (for example string="%.3f"). Use string="" to switch back to default format and Use string=" " to suppress printing.

Usually we use contour2d to draw levels curves on a 2D plot.

Enter the command contour() to see a demo.

Examples



t=%pi*[-10:10]/10;
deff("[z]=surf(x,y)","z=sin(x)*cos(y)"); z=feval(t,t,surf);
rect=[-%pi,%pi,-%pi,%pi,-1,1];
contour(t,t,z,10,35,45," ",[0,1,0],rect)
// changing the format of the printing of the levels
xset("fpf","%.2f")
xbasc()
contour(t,t,z,10,flag=[0,1,0],ebox=rect)
 
  

See also

contour2d, fcontour, fcontour2d, plot3d, xset

Author

J.Ph.C.