GlobalProperty customizes the objects appearance (curves, surfaces...) in a plot or surf command

## Description

The `GlobalProperty` is an optional argument that can be used inside a `plot` or a `surf()` command. It allows a global customization of all the new plotted lines (respectively surfaces). It has to be given as a {`PropertyName`, `PropertyValue`} pair. Several (Name,Value) pairs can be specified in a single call to `plot()` or `surf()`.

`PropertyName` must be a case-insensitive string defining the property to set. The `PropertyValue` can be a real, integer or string (scalar or matrix) depending on the type of property used. For example, to specify a red (color) longdash-dot (line style) with diamond marker (marker), the sequence should be: `'Color'`, `'red'`, `'LineSt'`, `'-.'`, `'Marker'`, `'diam'`.

As you can see, a full complete spelling of each property name and value is not required but those arguments, specified in any order, must remain unambiguous. `GlobalProperty` is predominant on all `LineSpec` previously stated.

Here is a complete list of the `PropertyName` you can specify (using plot or surf) and their available associated `PropertyValue`. If not specified, those properties are available for both `Polyline` and `Fac3d` objects (created respectively by `plot` or `surf`) and, as previously said, they are applied to the new created objects (lines or surfaces).

Sometimes, you may have two `PropertyName` corresponding to one property: the first one is the equivalent default Matlab name, the second is the default name used by Scilab (i.e.: `Color` or `Foreground` for a line, see below).

"CData" or "ColorData":

  a real matrix specifying the color at every points defined by `Z` matrix. This property is linked to the object's `data.color` property (see surface properties).

  This property is available for surfaces only.
"CDataMapping" or "ColorDataMapping":

  a string with value `'scaled'` or `'direct'`. If a `data.color` is set, each index color data specifies a single value for each vertex. `cdata_mapping` determines whether those indices are scaled to map linearly into the current colormap (`'scaled'` mode) or point directly into this colormap (`'direct'` mode). This property is useful when `color_flag` equals `2`, `3` or `4`.

  This property exists only with `Fac3d` entities. Note also that `plot3d` has `'direct'` mode by default and `surf` has `'scaled'` mode by default.
"Clipping":

  a string `"on"` or `"off"` defining the clipping mode (`"on"` by default). It is equivalent to the `clip_state` property. This field contains the `visible` property (see polyline properties).

  This property is not yet available for surface entities.
"Color" or "Foreground" (polylines only):

  A color specified by its name (text) among the predefined named colors list), or by its `"#RRGGBB"` hexadecimal code (text), or by its index in the color map (integer), or by the vector `[r,g,b]` of its Red-Green-Blue intensities in the [0,1] interval.

  This property is linked to the object's `foreground` property (see polyline properties).

"EdgeColor" or "Foreground" (surfaces only):

  A color specified by its name (text) among the predefined named colors list), or by its `"#RRGGBB"` hexadecimal code (text), or by its index in the color map (integer), or by the vector `[r,g,b]` of its Red-Green-Blue intensities in the [0,1] interval.

  This property is linked to the surface `foreground` property (see surface properties).

"FaceColor":

  a string with value `'none'`, `'flat'` or `'interp'` specifying the way the facet's color are rendered.

  - `'none'`: a mesh of the surface is drawn.
  - `'flat'` (default mode): the `Fac3d` `color.data` values determine one color per facet using the color of the first vertex of the facet.
  - `'interp'`: an interpolated shading is done on the surface using `color.data` to determine a color at each vertex of each facet.
"LineStyle":

  this property value should be a string defining a line style. This property is linked to the object's `line_style` property (see polyline properties or surface properties).

  `Specifier` | `Line Style`
  `-` | Solid line (default)
  `--` | Dashed line
  `:` | Dotted line
  `-.` | Dash-dotted line
  `none` | No line

"Marker" or "MarkStyle":

  a string defining the marker type. Note that if you specify a marker without a line style, both line (with default solid mode enabled) and marker are drawn.This property is linked to the object's `mark_style` and `mark_mode` properties (see polyline properties or surface properties).

  `Specifier` | `Marker Type`
  `+` | Plus sign
  `o` | Circle
  `*` | Asterisk
  `.` | Point
  `x` | Cross
  `'square'` or `'s'` | Square
  `'diamond'` or `'d'` | Diamond
  `^` | Upward-pointing triangle
  `v` | Downward-pointing triangle
  `>` | Right-pointing triangle
  `<` | Left-pointing triangle
  `'pentagram'` or `'p'` | Five-pointed star (pentagram)
  `'none'` | No marker (default)

"MarkerEdgeColor" or "MarkForeground":

  A color specified by its name (text) among the predefined named colors list), or by its `"#RRGGBB"` hexadecimal code (text), or by its index in the color map (integer), or by the vector `[r,g,b]` of its Red-Green-Blue intensities in the [0,1] interval.

  This property is linked to the object's `mark_foreground` property (see polyline properties or surface properties).

"MarkerFaceColor" or "MarkBackground":

  A color specified by its name (text) among the predefined named colors list), or by its `"#RRGGBB"` hexadecimal code (text), or by its index in the color map (integer), or by the vector `[r,g,b]` of its Red-Green-Blue intensities in the [0,1] interval.

  This property is linked to the object's `mark_background` property (see polyline properties or surface properties).

"MarkerSize" or "MarkSize":

  a scalar defining the marker size in `point` unit. This property is linked to the object's `mark_size` property with `mark_size_unit` enabled to `"point"` (see polyline properties or surface properties).

"Visible":

  a string `"on"` or `"off"` defining the visibility mode (`"on"` by default). This property is linked to the object's `visible` property (see polyline properties or surface properties).

"X data":

  a real vector or matrix (re-)defining the given data for all the plotted lines or surfaces. Concerning dimensions, note that this new data must match all the previous specified `X` data: that is to say all those data matrices must be of the same dimensions. This property is linked to the object's `data.x` property (see polyline properties or surface properties).

"Y data":

  a real vector or matrix (re-)defining the given data for all the plotted lines or surfaces. Concerning dimensions, note that this new data must match all the previous specified `Y` data: that is to say all those data matrices must be of the same dimensions. This property is linked to the object's `data.y` property (see polyline properties or surface properties).

"Z data":

  when used with `plot`, a real vector or matrix adding a `Z` data for all the plotted lines; with `surf`, a real matrix (re-)defining the given data for all the surfaces. Concerning dimensions, note that this new data must match all the previous specified `X` and `Y` data. This property is linked to the object's `data.z` property (see polyline properties or surface properties).

## Examples

    // --------------------
    // With the plot command :
    // --------------------
    x=1:10; // Init.
    clf
    plot(x,sin(x),'colo','red','linest','-.','marker','>','markeredg','cyan','markerFace','yellow','markersize',5)

    // combinations' order in {PropertyName,PropertyValue} does not matter
    clf
    plot(x,sin(x),'marker','p','markerfac','cyan','markersiz',10)

    // combination of LineSpec and GlobalProperty shows the GlobalProperty predominance
    clf
    plot(x, x.*x, '*cya--', 'color','gr', 'linestyle','-', ..
        'marker','sq', 'markersize',6, 'markforegroun','red','markbackgro',[0.2 0.5 0.6])

    //multiple plots with different LineSpecs and finally some global GlobalProperty
    clf
    t=0:%pi/20:2*%pi;
    plot(t,sin(t),'ro-.',t,cos(t),'cya+',t,abs(sin(t)),'--mo','markstyl','diam')

    // --------------------
    // With the plot2d command :
    // --------------------
    function draw_marks(title)
      a=gca();
      a.title.text=title;
      a.mark_size=8;
      a.data_bounds=[-1.5 1.5 -1.5 1.5];

      theta=(1/15)*(2*%pi)*[0:15];
      plot2d(cos(theta),sin(theta));

      for i=0:14 do
        theta=(i/15)*(2*%pi);
        plot2d(cos(theta),sin(theta),style=-i);
      end
    endfunction

    clf();
    subplot(2,2,1)
    draw_marks("black foreground / white background")

    subplot(2,2,2)
    a=gca();
    a.mark_foreground=-1;
    a.mark_background=4;
    draw_marks("black foreground / cyan background")

    subplot(2,2,3)
    a=gca();
    a.mark_background=0;
    draw_marks("black foreground / invisible background")

    subplot(2,2,4)
    a=gca();
    a.mark_foreground=0;
    a.mark_background=4;
    draw_marks("invisible foreground / cyan background")

    // --------------------
    // With the surf command :
    // --------------------

    Z= [   0.0001    0.0013    0.0053   -0.0299   -0.1809   -0.2465   -0.1100   -0.0168   -0.0008   -0.0000
        0.0005    0.0089    0.0259   -0.3673   -1.8670   -2.4736   -1.0866   -0.1602   -0.0067    0.0000
        0.0004    0.0214    0.1739   -0.3147   -4.0919   -6.4101   -2.7589   -0.2779    0.0131    0.0020
       -0.0088   -0.0871    0.0364    1.8559    1.4995   -2.2171   -0.2729    0.8368    0.2016    0.0130
       -0.0308   -0.4313   -1.7334   -0.1148    3.0731    0.4444    2.6145    2.4410    0.4877    0.0301
       -0.0336   -0.4990   -2.3552   -2.1722    0.8856   -0.0531    2.6416    2.4064    0.4771    0.0294
       -0.0137   -0.1967   -0.8083    0.2289    3.3983    3.1955    2.4338    1.2129    0.2108    0.0125
       -0.0014   -0.0017    0.3189    2.7414    7.1622    7.1361    3.1242    0.6633    0.0674    0.0030
        0.0002    0.0104    0.1733    1.0852    2.6741    2.6725    1.1119    0.1973    0.0152    0.0005
        0.0000    0.0012    0.0183    0.1099    0.2684    0.2683    0.1107    0.0190    0.0014    0.0000];

    clf();
    f=gcf();
    f.figure_size = [610,724];
    subplot(211)
    surf(Z,'facecol','interp','ydat',101:110,'edgecol','mage')
    subplot(212)
    surf(Z,'edgeco','b','marker','d','markersiz',9,'markerfac','k','xdata',-50:-41)

## See also

- LineSpec
- plot
- surf
- clf
- polyline properties
- surface properties

## History

6.0.2 The "Foreground", "markForeground", and "markBackground" colors can now be specified as named colors chosen in the full predefined colors list, or by their "#RRGGBB" hexadecimal codes, or by their indices in the colormap.