plot Esboço 2d

## Seqüência de Chamamento

                plot     // demo
                plot(y)
                plot(x, y)
                plot(x, func)
                plot(x, list(func, params))
                plot(x, polynomial)
                plot(x, rational)
                plot(.., LineSpec)
                plot(.., LineSpec, GlobalProperty)
                plot(x1, y1, LineSpec1, x2,y2,LineSpec2,...xN, yN, LineSpecN, GlobalProperty1,.. GlobalPropertyM)
                plot(x1,func1,LineSpec1, x2,y2,LineSpec2,...xN,funcN,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
  um vetor ou matriz de reais.

func

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

polynomial
  Single polynomial or array of polynomials.

rational
  Single rational or array of rationals.

y1, y2, y3,..

  Can be any of the possible input types described above:

  - vectors or matrices of real numbers or of integers
  - handle of a function (possibly in a list with its parameters).
  - polynomials
  - rationals
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 `func`. 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:

    gda().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();

gda().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]; 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];

Plotting the graph of polynomials or rationals:

    clf
    s = %s;

    // Polynomials
    x = -0.5:0.02:3;
    p = s*[2 ; (s-2) ; (s-1)*(s-2)]
    subplot(1,2,1)
    plot(x, p)
    legend(prettyprint(p,"latex","",%t), 2);

    // Rationals
    x = -0.5:0.02:2;
    r = (s-1)*s/(s-7)./[s+1, s-4]
    subplot(1,2,2)
    plot(x, r)
    legend(prettyprint(r,"latex","",%t), 2);

    gcf().children.grid = color("grey70")*[1 1]; // grids
    gcf().children.children([1 3]).font_size=3;  // legends

    --> p = s*[2 ; (s-2) ; (s-1)*(s-2)]
     p  =
      2s
      -2s +s²
      2s -3s² +s³

    ../..
    --> r = (s-1)*s/(s-7)./[s+1, s-4]
     r  =
         -s +s²      -s +s²
       ----------  -----------
       -7 -6s +s²  28 -11s +s²

s = %s; // Polynomials x = -0.5:0.02:3; p = s*[2 ; (s-2) ; (s-1)*(s-2)] subplot(1,2,1) plot(x, p) legend(prettyprint(p,"latex","",%t), 2); // Rationals x = -0.5:0.02:2; r = (s-1)*s/(s-7)./[s+1, s-4] subplot(1,2,2) plot(x, r) legend(prettyprint(r,"latex","",%t), 2); gcf().children.grid = color("grey70")*[1 1]; // grids gcf().children.children([1 3]).font_size=3; // legends gcf().axes_size = [650 400];

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
- close
- 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 func(x, params) with input parameters is now possible with plot(x, list(func, params)).
6.1.0 logflag option added.
6.1.1 Polynomials and rationals can be plotted.