Scilab Function
Last update : 20/10/2005

plot2d - 2D plot

### Calling Sequence

  `plot2d([x],y)`
  `plot2d([x],y,<opt_args>)`

### Parameters

- `x`: a real matrice or vector. If omitted, it is assumed to be the vector `1:n` where `n` is the number of curve points given by the `y` parameter.
- `y`: a real matrice or vector.
- `<opt_args>`: This represents a sequence of statements `key1=value1, key2=value2`,... where `key1`, `key2,...` can be one of the following:
  - `style`: sets the style for each curve. The associated value should be a real vector with integer (positive or negative) values
  - `rect`: sets the mimimal bounds requested for the plot. The associated value should be a real vector with four entries: `[xmin,ymin,xmax,ymax]`.
  - `logflag`: sets the scale (linear or logarithmic) along the axes. The associated value should be a a string with possible values: `"nn"`, `"nl"` , `"ln"` and `"ll"` .
  - `frameflag`: controls the computation of the actual coordinate ranges from the minimal requested values. The associated value should be an integer ranging from 0 to 8.
  - `axesflag`: specifies how the axes are drawn. The associated value should be an integer ranging from 0 to 5.
  - `nax`: sets the axes labels and tics definition. The associated value should be a real vector with four integer entries `[nx,Nx,ny,Ny]`
  - `leg`: sets the curves captions. The associated value should be a character string

### Description

`plot2d` plots a set of 2D curves. If you are familiar with Matlab `plot` syntax, you should use `plot`.

If `x` and `y` are vectors, plot2d(x,y,<opt_args>) plots vector `y` versus vector `x`. `x` and `y` vectors should have the same number of entries.

If `x` is a vector and `y` a matrix plot2d(x,y,<opt_args>) plots each columns of `y` versus vector `x`. In this case the number of columns of `y` should be equal to the number of `x` entries.

If `x` and `y` are matrices, plot2d(x,y,<opt_args>) plots each columns of `y` versus corresponding column of `x`. In this case the `x` and `y` sizes should be the same.

If `y` is a vector, plot2d(y,<opt_args>) plots vector `y` versus vector `1:size(y,'*')`.

If `y` is a matrix, plot2d(y,<opt_args>) plots each columns of `y` versus vector `1:size(y,1)`.

The `<opt_args>` arguments sould be used to customize the plot

  style: This option may be used to specify how the curves are drawn. If this option is specified, the associated value should be a vector with as many entries as curves.
    if `style(i)` is strictly positive, the curve is drawn as plain line and `style(i)` defines the index of the color used to draw the curve (see `getcolor`). Note that the line style and the thickness can be set throught the polyline entity properties (see `polyline_properties`).Piecewise linear interpolation is done between the given curve points.
    if `style(i)` is negative or zero, the given curve points are drawn using marks, `abs(style(i))` defines the mark with id used. Note that the marks color and marks sizes can be set throught the polyline entity properties (see `polyline_properties`).
  logflag: This option may be used to set the scale (linear or logarithmic) along the axes. The associated value should be a a string with possible values: `"nn"`, `"nl"` , `"ln"` and `"ll"`. `"l"` stands for logarithmic scale and graduations and `"n"` for normal scale.
  rect: This option may be used to set the mimimal bounds requested for the plot. If this option is specified, the associated value should be a real vector with four entries:

  `[xmin,ymin,xmax,ymax]`. `xmin` and `xmax` defines the bounds on the abscissae while `ymin` and `ymax` defines the bounds on the ordinates.

  This argument may be used together with the `frameflag` option to specify how the axes boundaries are derived from teh given `rect` argument. If the `frameflag` option is not given, it is supposed to be `frameflag=7`.

  The axes boundaries can also be customized throught the axes entity properties (see `axes_properties`).

  frameflag: This option may be used to control the computation of the actual coordinate ranges from the minimal requested values. Actual ranges can be larger than minimal requirements.
    frameflag=0: no computation, the plot use the previous (or default) scale.
    frameflag=1: The actual range is the range given by the `rect` option.
    frameflag=2: The actual range is computed from the min/max of the `x` and `y` data.
    frameflag=3: The actual range is the range given by the `rect` option and enlarged to get an isometric scale.
    frameflag=4: The actual range is computed from the min/max of the `x` and `y` data and enlarged to get an isometric scale.
    frameflag=5: The actual range is the range given by the `rect` option and enlarged to get pretty axes labels.
    frameflag=6: The actual range is computed from the min/max of the `x` and `y` data and enlarged to get pretty axes labels.
    frameflag=7: like `frameflag=1` but the previous plot(s) are redrawn to use the new scale. Used to add the current graph to a previous one.
    frameflag=8: like`frameflag=2` but the previous plot(s) are redrawn to use the new scale. Used to add the current graph to a previous one.
  The axes boundaries can also be customized throught the axes entity properties (see `axes_properties`)
  axesflag: This option may be used to specify how the axes are drawn. The associated value should be an integer ranging from 0 to 5 :
    axesflag=0: nothing is drawn around the plot.
    axesflag=1: axes are drawn, the y=axis is displayed on the left
    axesflag=2: the plot is surrounded by a box without tics
    axesflag=3: axes are drawn, the y=axis is displayed on the right
    axesflag=4: axes are drawn centred in the middle of the frame box
    axesflag=5: axes are drawn so as to cross at point (0,0) . If point (0,0) does not lie inside the frame, axes will not appear on the graph

  The axes aspect can also be customized throught the axes entity properties (see `axes_properties`).

  nax: This option may be used to specify the axes labels and tics definition when `axesflag=1` option is used. The associated value should be a real vector with four integer entries `[nx,Nx,ny,Ny]`.`Nx` gives the number of main tics to be used on the x-axis, `nx` gives the number of subtics to be drawn between two main x-axis tics.`Ny` and `ny` give similar information for the y-axis.If `axesflag` option is not set `nax` option supposes that `axesflag` option has been set to 1.
  leg: This option may be used to sets the curve captions. It must be a string with the form `"leg1@leg2@...."` where `leg1` , `leg2` , etc. are respectively the captions of the first curve, of the second curve, etc. The default is `" "`.

  The curve captions are drawn on below the x-axis. This option is not flexible enough, use the `legends` function preferably.

### More information

To get more information on the plot2d old syntax , use the `plot2d_old_version` help document.

By default, successive plots are superposed. To clear the previous plot, use `clf()`.

Enter the command `plot2d()` to see a demo.

Other high level plot2d function exist:

  - plot2d2: same as `plot2d` but the curve is supposed to be piecewise constant.
  - plot2d3: same as `plot2d` but the curve is plotted with vertical bars.
  - plot2d4: same as `plot2d` but the curve is plotted with arrows.

### Examples

    // x initialisation
    x=[0:0.1:2*%pi]';
    //simple plot
    plot2d(sin(x))
    clf()
    plot2d(x,sin(x))
    //multiple plot
    clf()
    plot2d(x,[sin(x) sin(2*x) sin(3*x)])
    // multiple plot giving the dimensions of the frame
    clf()
    plot2d(x,[sin(x) sin(2*x) sin(3*x)],rect=[0,0,6,0.5])
    //multiple plot with captions and given tics + style
    clf()
    plot2d(x,[sin(x) sin(2*x) sin(3*x)],..
      [1,2,3],leg="L1@L2@L3",nax=[2,10,2,10],rect=[0,-2,2*%pi,2])
    // isoview
    clf()
    plot2d(x,sin(x),1,frameflag= 4)
    // scale
    clf()
    plot2d(x,sin(x),1,frameflag= 6)
    // auto scaling with previous plots + style
    clf()
    plot2d(x,sin(x),-1)
    plot2d(x,2*sin(x),12)
    plot2d(2*x,cos(x),3)
    // axis on the right
    clf()
    plot2d(x,sin(x),leg="sin(x)")
    a=gca(); // Handle on axes entity
    a.y_location ="right";
    // axis centered at (0,0)
    clf()
    plot2d(x-4,sin(x),1,leg="sin(x)")
    a=gca() // Handle on axes entity
    a.x_location = "middle";
    a.y_location = "middle";
    // Some operations on entities created by plot2d ...
    a=gca();
    a.isoview='on';
    a.children // list the children of the axes : here it is an Compound child composed of 2 entities
    poly1= a.children.children(2); //store polyline handle into poly1
    poly1.foreground = 4; // another way to change the style...
    poly1.thickness = 3;  // ...and the tickness of a curve.
    poly1.clip_state='off' // clipping control
    leg= a.children.children(1); // store legend handle into leg
    leg.font_style = 9;
    leg.foreground = 6;
    a.isoview='off';

### See Also

`plot`, `plot2d1`, `plot2d2`, `plot2d3`, `plot2d4`, `clf`, `xdel`, `delete`,

### Author