Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Português


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 pory 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();

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

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

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)

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²

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

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)

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

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

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

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

Ver Também

  • plot2d — 2D plot
  • plot2d2 — esboço 2d (funções de degraus)
  • plot2d3 — esboço 2d (barras veticais)
  • plot2d4 — esboço 2d (setas)
  • param3d — plots a single curve in a 3D cartesian frame
  • surf — Esboço de superfície 3d
  • scf — Ajusta a (janela) de figura gráfica corrente
  • clf — Clears and resets a figure or a frame uicontrol
  • close — Closes graphic figures, progression or wait bars, the help browser, xcos, the variables browser or editor.
  • delete — Deleta uma entidade gráfica e seus galhos
  • LineSpec — Customização rápida de linhas que aparecem em um esboço
  • Cores nomeadas — Lista dos nomes das cores
  • GlobalProperty — Customização de aparência dos objetos (curvas, superfícies...) num comando plot ou surf.

Histórico

VersãoDescrição
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.
Report an issue
<< paramfplot2d 2d_plot plot2d >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:35:26 CEST 2023