plot Esboço 2d

## Seqüência de Chamamento

                plot     // demo
                plot(y)
                plot(x, y)
                plot(x, fun)
                plot(x, list(fun, param))
                plot(.., LineSpec)
                plot(.., LineSpec, GlobalProperty)
                plot(x1, y1, LineSpec1, x2,y2,LineSpec2,...xN, yN, LineSpecN, GlobalProperty1,.. GlobalPropertyM)
                plot(x1,fun1,LineSpec1, x2,y2,LineSpec2,...xN,funN,LineSpecN, GlobalProperty1, ..GlobalPropertyM)
                plot(logflag,...)
                plot(axes_handle,...)

## Parâmetros

x

  uma matriz ou vetor de reais. Se omitido, é assumido como sendo o vetor `1:n` onde `n` é o número de pontos de curva dado pelo parâmetro `y`.

y

  uma matriz de reais ou um vetor.

fun, fun1

  função definida como um macro ou uma primitiva, como em `plot(x, sin)`

  If the function to plot needs some parameters as input arguments, the function and its parameters can be specified through a list, as in `plot(x, list(delip, -0.4))`

LineSpec

  este argumento opcional deve ser usado como um atalho para especificar um modo de desenhar uma linha. Podemos ter um `LineSpec` por`y` ou `{x,y}` previamente entrados. As opções `LineSpec` lidam com os especificadores LineStyle, Marker e Color (ver LineSpec). Estes especificadores determinam o estilo de linha, de marcas e a cor das linhas esboçadas.

GlobalProperty

  este argumento opcional representa uma seqüência de pares de declarações `{PropertyName,PropertyValue}` tque define propriedades globais de objetos a serem aplicadas a todas as curvas criadas pelo esboço. Para uma visualização completa de das propriedades disponíveis veja GlobalProperty.

logflag

  "ln" | "nl" | "ll" : 2-character word made of "l" standing for "Logarithmic" or/and "n" standing for "Normal". The first character applies to the X axis, the second to the Y axis. Hence, "ln" means that the X axis is logarithmic and the Y axis is normal. The default is "nn": both axes in normal scales.

  `logflag` must be used after `axes_handle` (if any) and before the first curve's data `x` or `y` or `fun`. It applies to all curves drawn by the `plot(…)` instruction.

axes_handle

  este argumento opcional força o esboço a aparecer dentro dos eixos selecionados fornecidos por `axes_handle` ao invés dos eixos correntes (ver gca).

## Descrição

`plot` esboça um conjunto de curvas 2d. `plot` foi reconstruído para lidar melhor com a sintaxe do Matlab. Para melhorar a compatibilidade gráfica com o Matlab, utilize `plot` (ao invés de plot2d).

Especificação de entrada de dados:

Neste parágrafo, para sermos mais claros, não mencionaremos os argumentos opcionais `LineSpec` ou `GlobalProperty` já que eles não interferem na entrada de dados (exceto pelas propriedades `"Xdata"`, `"Ydata"` e `"Zdata"`, ver GlobalProperty). É assumido que todos estes argumentos podem estar presentes também.

Se `y` é um vetor, plot(y) esboça um vetor `y` versus o vetor `1:size(y,'*')`.

Se `y` é uma matriz, plot(y) esboça cada coluna de `y` versus o vetor `1:size(y,1)`.

Se `x` e `y` são vetores, plot(x,y) esboça o vetor `y` versus o vetor `x`. Os vetores `x` e `y` devem ter o mesmo número de entradas.

Se `x` é um vetor e `y` uma matriz plot(x,y) esboça cada coluna de `y` versus o vetor `x`. Neste caso, o número de colunas de `y` deve ser igual ao número de entradas de `x`.

Se `x` e `y` são matrizes, plot(x,y) esboça cada coluna de `y` versus a coluna correspondente de `x`. Neste caso, os tamanhos `x` e `y` devem ser os mesmos.

Finalmente, se apenas `x` ou `y` é uma matriz, o vetor é esboçado versus cada linha ou cada coluna da matriz. A escolha é feita dependendo se a dimensão de linha ou coluna do vetor coincide com a dimensão de linha ou coluna da matriz. No caso de uma matriz quadrada (apenas `x` ou penas `y`), a prioridade é dada a colunas ao invés de linhas (ver exemplos abaixo).

`y` também pode ser uma função definida como um macro ou uma primitiva. Neste caso, os dados `x` devem ser fornecidos (como um vetor ou uma matriz) e a computação correspondente de `y(x)` é feita implicitamente.

Os argumentos `LineSpec` e `GlobalProperty` devem ser utilizados para customizar o esboço. Aqui está uma lista completa das opções disponíveis.

LineSpec

  esta opção pode ser utilizada para se especificar, de um modo curto e fácil, como as curvas são desenhadas. Deve sempre ser um string contendo referências aos especificadores LineStyle, Marker e Color.

  Essas referências devem ser ajustadas denro do string (a ordem não é importante) de modo a não ter ambigüidades. Por exemplo, para especificar uma linha vermelha de traço longo com marcas de rombos, pode-se escrever : `'r--d'` ou `'--dire'` ou `'--reddiam'` ou outra sentença sem ambigüidade... ou de modo completo `'diamondred--'` (ver LineSpec).

  Note que os estilos de linha e marcas (e tamanhos) e as cores, podem ser (re*)ajustados através das propriedades da entidade poligonal (ver polyline_properties).

GlobalProperty

  esta opção pode ser utilizada para especificar como as linhas serão desenhadas com mais opções que via `LineSpec`. Deve sempre ser um par de declarações constituidos de um string definindo `PropertyName`, (nome da propriedade) e seu valor associado `PropertyValue` (que pode ser um string, um inteiro ou qualquer outra coisa... dependendo do tipo de `PropertyName`). Utilizando-se `GlobalProperty`, pode-se ajustar várias propriedades : todas as propriedades disponíveis via LineSpec e mais: a cor da marca (plano de fundo e primeiro plano), a visibilidade, o recorte e a espessura das curvas. (ver GlobalProperty)

  Note que todas as propriedades podem ser (re-)ajustadas através das propriedades de entidades poligonais (ver polyline_properties).

## Observações

Por padrão, esboços sucessivos são superpostos. Para limpar o esboço anterior, use `clf()`. Para habilitar o modo `auto_clear` (limpeza automática) como modo padrão, edite seus eixos fazendo o seguinte:

da=gda();

da.auto_clear = 'on'

Para uma melhor exibição, a função `plot` pode modificar a propriedade `box` de seu Axes (eixos) raíze. Isto acontece quando uma entidade Axes é criada por uma chamada a `plot` ou é vazia antes da chamada. Se um dos eixos é centrado na origem, box é desabilitado. Em caso contrário, box é habilitado.

Para mais informações sobre a propriedade box e sobre o posicionamento dos eixos, veja axes_properties

Uma tabela de cores padrão é utilizada para colorir as curvas esboçadas quando você não especifica as cores. Ao desenhar linhas múltiplas, o comando plot automaticamente atribui as cores abaixo de modo cíclico. Aqui estão as cores utilizadas:

`R` | `G` | `B`
--- | --- | ---
0. | 0. | 1.
0. | 0.5 | 0.
1. | 0. | 0.
0. | 0.75 | 0.75
0.75 | 0. | 0.75
0.75 | 0.75 | 0.
0.25 | 0.25 | 0.25

Entre com o comando `plot` para visualizar uma demonstração.

## Exemplos

Choosing the normal or logarithmic plotting mode:

    set(gda(), "grid_style",[7 7], "grid", [1 1]*color("grey70"));
    title(gda(), "fontsize", 3, "color", "lightseagreen", "fontname", "helvetica bold");

    x = linspace(1e-1,100,1000);
    xm = 35;
    dx = 17;
    G = exp(-((x-xm)/dx).^2/2)*30;

    scf(1); clf
    subplot(2,2,1), plot(x, G),       title("plot(x, y)")
    subplot(2,2,2), plot("ln", x, G), title("semilog-x : plot(""ln"", x, y)")
    gca().sub_ticks(1) = 8;
    subplot(2,2,3), plot("nl", x, G), title("semilog-y : plot(""nl"", x, y)")
    gca().sub_ticks(2) = 8;
    subplot(2,2,4), plot("ll", x, G), title("loglog : plot(""ll"", x, y)")
    gca().sub_ticks = [8 8];

    sda();

title(gda(), "", "fontsize", 3, "color", "lightseagreen", "fontname", "helvetica bold"); set(gda(), "grid_style",[7 7], "grid", [1 1]*color("grey70")); x = linspace(1e-1,100,1000); xm = 35; dx = 17; G = exp(-((x-xm)/dx).^2/2)*30; scf(1); clf subplot(2,2,1), plot(x, G), title("plot(x, y)") subplot(2,2,2), plot("ln", x, G), title("semilog-x : plot(""ln"", x, y)") gca().sub_ticks(1) = 8; subplot(2,2,3), plot("nl", x, G), title("semilog-y : plot(""nl"", x, y)") gca().sub_ticks(2) = 8; subplot(2,2,4), plot("ll", x, G), title("loglog : plot(""ll"", x, y)") gca().sub_ticks = [8 8]; gcf().axes_size = [750 520]; sda();

Simple plot of a single curve:

    // Default abscissae = indices
    subplot(1,2,1)
    plot(sin(0:0.1:2*%pi))
    xlabel("x indices")

    // With explicit abscissae:
    x = [0:0.1:2*%pi]';
    subplot(1,2,2)
    plot(x, sin(x))
    xlabel("Specified abscissae")

// Default abscissae = indices subplot(1,2,1) plot(sin(0:0.1:2*%pi)) xlabel("x indices") // With explicit abscissae: x = [0:0.1:2*%pi]'; subplot(1,2,2) plot(x, sin(x)) xlabel("Specified abscissae") gcf().axes_size = [700 350];

Multiple curves with shared abscissae: Y: 1 column = 1 curve:

    clf()
    x = [0:0.1:2*%pi]';
    plot(x, [sin(x) sin(2*x) sin(3*x)])

x=[0:0.1:2*%pi]'; plot(x,[sin(x) sin(2*x) sin(3*x)]) gcf().axes_size = [700 350];

Specifying a macro or a builtin instead of explicit ordinates:

    clf
    subplot(2,2,1)         // sin() is a builtin
    plot(1:0.1:10, sin)    // <=> plot(1:0.1:10, sin(1:0.1:10))
    title("plot(x, sin)", "fontsize",3)

    // with a macro:
    deff('y = myFun(x)','y = x + rand(x)')
    subplot(2,2,2)
    plot(-3:0.1:5, myFun)
    title("plot(x, myFun)", "fontsize",3)

    // With functions with parameters:
    subplot(2,2,3)
    plot(1:0.05:7, list(delip, -0.4))  // <=> plot(1:0.05:7, delip(1:0.05:7,-0.4) )
    title("plot(x, list(delip,-0.4))", "fontsize",3)

    function Y = myPow(x,p)
        [X,P] = ndgrid(x,p);
        Y = X.^P;
        m = max(abs(Y),"r");
        for i = 1:size(Y,2)
            Y(:,i) = Y(:,i)/m(i);
        end
    endfunction
    x = -5:0.1:6;
    subplot(2,2,4)
    plot(x, list(myPow,1:5))
    title("plot(x, list(myPow,1:5))", "fontsize",3)

subplot(2,2,1) // sin() is a builtin plot(1:0.1:10, sin) // <=> plot(1:0.1:10, sin(1:0.1:10)) title("plot(x,sin)", "fontsize",3) // with a macro: deff('y = myFun(x)','y = x + rand(x)') subplot(2,2,2) plot(-3:0.1:5, myFun) title("plot(x, myFun)", "fontsize",3) // With functions with parameters: subplot(2,2,3) plot(1:0.05:7, list(delip, -0.4)) // <=> plot(1:0.05:7, delip(1:0.05:7,-0.4) ) title("plot(x, list(delip,-0.4))", "fontsize",3) function Y = myPow(x,p) [X,P] = ndgrid(x,p); Y = X.^P; m = max(abs(Y),"r"); for i = 1:size(Y,2) Y(:,i) = Y(:,i)/m(i); end endfunction x = -5:0.1:6; subplot(2,2,4) plot(x, list(myPow,1:5)) title("plot(x, list(myPow,1:5))", "fontsize",3) gcf().axes_size = [730 500];

Setting curves simple styles when calling plot():

    clf
    t = -%pi:%pi/20:2*%pi;
    // sin() : in Red, with O marks, without line
    // cos() : in Green, with + marks, with a solid line
    // gaussian: in Blue, without marks, with dotted line
    gauss = 1.5*exp(-(t/2-1).^2)-1;

    plot(t,sin,'ro', t,cos,'g+-', t,gauss,':b')

t = -%pi:%pi/20:2*%pi; // sin() : in Red, with O marks, without line // cos() : in Green, with + marks, with a solid line // gaussian: in Blue, without marks, with dotted line gauss = 1.5*exp(-(t/2-1).^2)-1; plot(t,sin,'ro', t,cos,'g+-', t,gauss,':b') gcf().axes_size = [800 400];

Vertical segments between two curves, with automatic colors, and using Global properties for markers styles. Targeting a defined axes.

    clf
    subplot(1,3,3)
    ax3 = gca();         // We will draw here later
    xsetech([0 0 0.7 1]) // Defines the first Axes area
    t = -3:%pi/20:7;
    // Tuning markers properties
    plot([t ;t],[sin(t) ;cos(t)],'marker','d','markerFaceColor','green','markerEdgeColor','yel')

    // Targeting a defined axes
    plot(ax3, t, sin)

clf subplot(1,3,3) ax3 = gca(); // We will draw here later xsetech([0 0 0.7 1]) // Defines the first Axes area t = -3:%pi/20:7; // Tuning markers properties plot([t ;t],[sin(t) ;cos(t)],'marker','d','markerFaceColor','green','markerEdgeColor','yel') // Targeting a defined axes plot(ax3, t, sin) gcf().axes_size = [800 400];

Case of a non-square Y matrix: When it is consistent and required, X or/and Y data are automatically transposed in order to become plottable.

    clf()
    x = [5 6 7 8]
    y = [1   1   1   1   8
         2   3   4   5   9
         3   4   5   6  10
         4   5   6   7  12];

    // Only one matching possibility case: how to make 4 identical plots in 4 manners...
    // x is 1x4 (vector) and y is 4x5 (non square matrix)
    subplot(221); plot(x', y , "o-");    // OK as is
    subplot(222); plot(x , y , "o-");    // x is transposed
    subplot(223); plot(x', y', "o-");    // y is transposed
    subplot(224); plot(x , y', "o-");    // x and y are transposed

x = [5 6 7 8] y = [1 1 1 1 8 2 3 4 5 9 3 4 5 6 10 4 5 6 7 12]; // Only one matching possibility case: how to make 4 identical plots in 4 manners... // x is 1x4 (vector) and y is 4x5 (non square matrix) subplot(221); plot(x', y , "o-"); // OK as is subplot(222); plot(x , y , "o-"); // x is transposed subplot(223); plot(x', y', "o-"); // y is transposed subplot(224); plot(x , y', "o-"); // x and y are transposed

Case of a square Y matrix, and X implicit or square:

    clf
    t = [1   1   1   1
         2   3   4   5
         3   4   5   6
         4   5   6   7];

    subplot(231), plot(t,"o-") , title("plot(t)",  "fontsize",3)
    subplot(234), plot(t',"o-"), title("plot(t'')", "fontsize",3)

    subplot(232), plot(t,t,"o-") , title("plot(t, t)",  "fontsize",3)
    subplot(233), plot(t,t',"o-"), title("plot(t,t'')", "fontsize",3)

    subplot(235), plot(t', t,"o-"),  title("plot(t'', t)",   "fontsize",3)
    subplot(236), plot(t', t',"o-"), title("plot(t'', t'')", "fontsize",3)

    for i=1:6, gcf().children(i).data_bounds([1 3]) = 0.5; end

clf t = [1 1 1 1 2 3 4 5 3 4 5 6 4 5 6 7]; subplot(231), plot(t,"o-") , title("plot(t)", "fontsize",3) subplot(234), plot(t',"o-"), title("plot(t'')", "fontsize",3) subplot(232), plot(t,t,"o-") , title("plot(t, t)", "fontsize",3) subplot(233), plot(t,t',"o-"), title("plot(t,t'')", "fontsize",3) subplot(235), plot(t', t,"o-"), title("plot(t'', t)", "fontsize",3) subplot(236), plot(t', t',"o-"), title("plot(t'', t'')", "fontsize",3) for i=1:6, gcf().children(i).data_bounds([1 3]) = 0.5; end gcf().axes_size = [800 450];

Special cases of a matrix X and a vector Y:

    clf
    X = [1   1   1   1
         2   3   4   5
         3   4   5   6
         4   5   6   7];
    y = [1 2 3 4];

    subplot(221), plot(X, y,  "o-"), title("plot(X, row)",  "fontsize",3)
            // equivalent to plot(t, [1 1 1 1; 2 2 2 2; 3 3 3 3; 4 4 4 4])
    subplot(223), plot(X, y', "o-"), title("plot(X, col)  (row = col'')",  "fontsize",3)
    subplot(222), plot(X',y,  "o-"), title("plot(X'', row)",  "fontsize",3)
    subplot(224), plot(X',y', "o-"), title("plot(X'', col)  (row = col'')",  "fontsize",3)

    for i = 1:4, gcf().children(i).data_bounds([1 3]) = 0.5; end

clf X = [1 1 1 1 2 3 4 5 3 4 5 6 4 5 6 7]; y = [1 2 3 4]; subplot(221), plot(X, y, "o-"), title("plot(X, row)", "fontsize",3) // equivalent to plot(t, [1 1 1 1; 2 2 2 2; 3 3 3 3; 4 4 4 4]) subplot(223), plot(X, y', "o-"), title("plot(X, col) (row = col'')", "fontsize",3) subplot(222), plot(X',y, "o-"), title("plot(X'', row)", "fontsize",3) subplot(224), plot(X',y', "o-"), title("plot(X'', col) (row = col'')", "fontsize",3) for i = 1:4, gcf().children(i).data_bounds([1 3]) = 0.5; end

Post-tuning Axes and curves:

    x=[0:0.1:2*%pi]';
    plot(x-4,sin(x),x+2,cos(x))

    // axis centered at (0,0)
    a=gca(); // Handle on axes entity
    a.x_location = "origin";
    a.y_location = "right";
    isoview on

    // Some operations on entities created by plot ...
    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 thickness of a curve.
    poly1.clip_state='off' // clipping control
    isoview off

x = [0:0.1:2*%pi]'; plot(x-4,sin(x),x+2,cos(x)) a = gca(); a.x_location = "origin"; a.y_location = "origin"; isoview on a.children poly1 = a.children.children(2); poly1.foreground = 4; poly1.thickness = 3; poly1.clip_state='off' isoview off

## Ver Também

- plot2d
- plot2d2
- plot2d3
- plot2d4
- param3d
- surf
- scf
- clf
- xdel
- delete
- LineSpec
- Cores nomeadas
- GlobalProperty

## Histórico

6.0.1 The "color"|"foreground", "markForeground", and "markBackground" GlobalProperty colors can now be chosen among the full predefined colors list, or by their "#RRGGBB" hexadecimal codes, or by their indices in the colormap.
6.0.2 Plotting a function fun(x, params) with input parameters is now possible with plot(x, list(fun, params)).
6.1.0 logflag option added.