Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.

See the recommended documentation of this function

# 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>)

### Arguments

- x,y
two real row vectors of size n1 and n2.

- z
real matrix of size (n1,n2), the values of the function or a Scilab function which defines the surface

`z=f(x,y)`

.- 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- -
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 representation mode.

- 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.

- 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 similarily

`type=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=linspace(-%pi,%pi,30); function z=my_surface(x, y),z=x*sin(x)^2*cos(y),endfunction contour(t,t,my_surface,10) // changing the format of the printing of the levels xset("fpf","%.1f") clf() contour(t,t,my_surface,10) // 3D clf() z=feval(t,t,my_surface); plot3d(t,t,z);contour(t,t,z+0.2*abs(z),20,flag=[0 2 4]);

### Authors

J.Ph.C.

<< 3d_plot | 3d_plot | eval3d >> |