[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Índice] [ ? ]

8. Montando Gráficos


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Índice] [ ? ]

8.1 Definições para Montagem de Gráficos

Variável: in_netmath

Valor padrão: false

Quando in_netmath é true, plot3d imprime uma saída OpenMath para o console se plot_format é openmath; caso contrário in_netmath (mesmo se true) não tem efeito. in_netmath não tem efeito sobre plot2d.

Função: openplot_curves (list, rest_options)

Pega uma lista de curvas tais como

 
[[x1, y1, x2, y2, ...], [u1, v1, u2, v2, ...], ..]

ou

 
[[[x1, y1], [x2, y2], ...], ...]

e monta seus gráficos. Isso é similar a xgraph_curves, mas não usa as rotinas open plot. Argumentos adicionais de símbolos podem ser dados tais como "{xrange -3 4}". O exemplo adiante monta o gráfico de duas curvas, usando pontos grandes, rotulando-se o primeiro jim e o segundo rotulando-se jane.

 
(%i1) openplot_curves ([["{plotpoints 1} {pointsize 6}
      {label jim} {xaxislabel {joe is nice}}"],
      [1, 2, 3, 4, 5, 6, 7, 8], ["{label jane} {color pink }"],
      [3, -1, 4, 2, 5, 7]]);

../figures/plotting1

Algumas outras palavras chave especiais são xfun, color, plotpoints, linecolors, pointsize, nolines, bargraph, labelposition, xaxislabel, e yaxislabel.

Função: plot2d (expr, range, ..., options, ...)
Função: plot2d (parametric_expr)
Função: plot2d ([expr_1, ..., expr_n], x_range, y_range)
Função: plot2d ([expr_1, ..., expr_n], x_range)
Função: plot2d (expr, x_range, y_range)
Função: plot2d (expr, x_range)
Função: plot2d (expr, x_range)
Função: plot2d ([name_1, ..., name_n], x_range, y_range)
Função: plot2d ([name_1, ..., name_n], x_range)
Função: plot2d (name, x_range, y_range)
Função: plot2d (name, x_range)

Mostra a montagem de uma ou mais expressões como uma função de uma variável.

Em todos os casos, expr é uma expressão a ser montado o gráfico no eixo vertical como uma função de uma variável. x_range, a amplitude do eixo horizontal, é uma lista da forma [variável, min, max], onde variável é uma variável que aparece em expr. y_range, e a amplitude do eixo vertical, é uma lista da forma [y, min, max].

plot2d (expr, x_range) monta o gráfico expr como uma função da variável nomeada em x_range, sobre a amplitude especificada em x_range. Se a amplitude vertical não for alternativamente especificada por set_plot_option, essa é escolhida automaticamente. Todas as opções são assumidas terem valores padrão a menos que sejam alternativamente especificadas por set_plot_option.

plot2d (expr, x_range, y_range) monta o gráfico de expr como uma função de uma variável nomeada em x_range, sobre a amplitude especificada em x_range. O alcance vertical é escolhido para y_range. Todas as opções são assumidas terem valores padrão a menos que sejam alternativamente especificadas por set_plot_option.

plot2d ([expr_1, ..., expr_n], x_range) monta o gráfico expr_1, ..., expr_n como uma função da variável nomeada em x_range, sobre a amplitude especificada em x_range. Se a amplitude vertical não for alternativamente especificada por set_plot_option, essa é escolhida automaticamente. Todas as opções são assumidas terem valores padrão a menos que sejam alternativamente especificadas por set_plot_option.

plot2d ([expr_1, ..., expr_n], x_range, y_range) monta o gráfico expr_1, ..., expr_n como uma função de uma variável nomedada em x_range, sobre a amplitude especificada em x_range. O alcance vertical é escolhido para y_range. Todas as opções são assumidas terem valores padrão a menos que sejam alternativamente especificadas por set_plot_option.

Uma função a ter seu gráfico montado pode ser especificada como o nome de uma função Maxima ou como o nome de uma função Lisp ou como um operador, como uma expressão lambda do Maxima, ou como uma expressão geral do Maxima. Se especificada como um nome ou como expressão lambda, a função deve ser uma função de um argumento.

Exemplos:

Montando um gráfico de uma expressão, e escolhendo alguns parâmetros comumente usados.

 
(%i1) plot2d (sin(x), [x, -5, 5])$
(%i2) plot2d (sec(x), [x, -2, 2], [y, -20, 20], [nticks, 200])$

../figures/plotting2
../figures/plotting3

Montando gráfico de funções pelo nome.

 
(%i1) F(x) := x^2 $

(%i2) :lisp (defun |$g| (x) (m* x x x))

$g
(%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $

(%i3) plot2d (F, [u, -1, 1])$

(%i4) plot2d ([F, G, H], [u, -1, 1])$

../figures/plotting4
../figures/plotting5

Em qualquer lugar onde pode existir uma expressão comum, pode existir uma expressão paramétrica: parametric_expr é uma lista da forma [parametric, x_expr, y_expr, t_range, options]. Aqui x_expr e y_expr são expressões de 1 variável var que é o primeiro elemento da amplitude trange. A montagem do gráfico mostra o caminho descrito pelo par [x_expr, y_expr] como var varia em trange.

No exemplo seguinte, montaremos o gráfico de um círculo, então faremos a montagem do gráfico com somente poucos pontos usados, desse modo vamos pegar uma estrela, e inicialmente montaremos o gráfico juntamente com uma função comum de X.

Exemplos de gráficos paramétricos:

Expressões discretas podem também serem usadas ou em lugar de expressões comuns ou em lugar de expressões paramétricas: discrete_expr é uma lista da forma [discrete, x_list, y_list] ou da forma [discrete, xy_list], onde xy_list é uma lista de pares [x,y].

Exemplos de gráficos discretos:

Veja também plot_options, que descreve opções de montagem de gráfico e tem mais exemplos.

Função: xgraph_curves (list)

transforma em gráfico a lista de `grupos de pontos' dados em lista usando xgraph. Se o programa xgraph não estiver instalado, esse comando irá falhar.

Uma lista de grupos de pontos pode ser da forma

 
[x0, y0, x1, y1, x2, y2, ...]

ou

 
[[x0, y0], [x1, y1], ...]

Um grupo de pontos pode também conter símbolos que fornecem rótulos ou outra informação.

 
xgraph_curves ([pt_set1, pt_set2, pt_set3]);

transforma em gráfico os três grupos de pontos com três curvas.

 
pt_set: append (["NoLines: True", "LargePixels: true"],
                          [x0, y0, x1, y1, ...]);

fizemos com que os grupos de pontos [e os próprios subseqüêntes], não possuam linhas entre os pontos, e para usar pixels largos. Veja a página de manual sobre o xgraph para especificar mais opções.

 
pt_set: append ([concat ("\"", "x^2+y")], [x0, y0, x1, y1, ...]);

fizemos aí aparecer um "rótulo" de "x^2+y" para esse grupo de pontos em particular. As aspas, ", no início é que dizem ao xgraph isso é um rótulo.

 
pt_set: append ([concat ("TitleText: Dados da Amostra")], [x0, ...])$

fizemos o título principal do gráfico ser "Dados da Amostra" ao invés de "Maxima Plot".

Para fazer um gráfico em barras com largura de 0.2 unidades, e para montar o gráfico com duas possibilidades diferentes dos tais gráficos em barras:

 
(%i1) xgraph_curves ([append (["BarGraph: true", "NoLines: true",
      "BarWidth: .2"], create_list ([i - .2, i^2], i, 1, 3)),
      append (["BarGraph: true", "NoLines: true", "BarWidth: .2"],
      create_list ([i + .2, .7*i^2], i, 1, 3))]);

../figures/plotting13

Um arquivo temporário `xgraph-out' é usado.

Variável de sistema: plot_options

Elementos dessa lista estabelecem as opções padrão para a montagem do gráfico. Se uma opção está presente em uma chamada a plot2d ou plot3d, esse valor tem precedência sobre a opção padrão. De outra forma, o valor em plot_options é usado. Opções padrão são atribuídas por set_plot_option.

Cada elemento de plot_options é uma lista de dois ou mais ítens. O primeiro item é o nome de uma opção, e os restantes compreendem o valor ou valores atribuídos à opção. Em alguns casos, o valor atribuído é uma lista, que pode compreender muitos ítens.

As opções de montagem de gráfico que são reconhecidas por plot2d e plot3d são as seguintes:

Existem muitas opções de montagem de gráficos específicas para gnuplot. Todas essas opções (exceto gnuplot_pm3d) são comandos gnuplot em estado natural, especificados como seqüências de caracteres. Consulte a documentação do gnuplot para maiores detalhes.

Exemplos:

 
(%i1) plot2d (sin(x), [x, 0, 2*%pi], [gnuplot_term, ps],
                        [gnuplot_out_file, "sin.eps"])$
 
(%i2) plot2d ([gamma(x), 1/gamma(x)], [x, -4.5, 5], [y, -10, 10],
                     [gnuplot_preamble, "set key bottom"])$

../figures/plotting14

 
(%i3) my_preamble: "set xzeroaxis; set xtics ('-2pi' -6.283, \
'-3pi/2' -4.712, '-pi' -3.1415, '-pi/2' -1.5708, '0' 0, \
'pi/2' 1.5708, 'pi' 3.1415,'3pi/2' 4.712, '2pi' 6.283)"$

(%i4) plot2d([cos(x), sin(x), tan(x), cot(x)],
       [x, -2*%pi, 2.1*%pi], [y, -2, 2],
       [gnuplot_preamble, my_preamble]);

../figures/plotting15

 
(%i5) my_preamble: "set xzeroaxis; set xtics ('-2{/Symbol p}' \
-6.283, '-3{/Symbol p}/2' -4.712, '-{/Symbol p}' -3.1415, \
'-{/Symbol p}/2' -1.5708, '0' 0,'{/Symbol p}/2' 1.5708, \
'{/Symbol p}' 3.1415,'3{/Symbol p}/2' 4.712, '2{/Symbol p}' \
6.283)"$

(%i6) plot2d ([cos(x), sin(x), tan(x)], [x, -2*%pi, 2*%pi],
    [y, -2, 2], [gnuplot_preamble, my_preamble],
    [gnuplot_term, ps], [gnuplot_out_file, "trig.eps"]);
 
(%i7) plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
        [grid, 50, 50], [gnuplot_pm3d, true])$

../figures/plotting16

 
(%i8) my_preamble: "set pm3d at s;unset surface;set contour;\
set cntrparam levels 20;unset key"$
(%i9) plot3d(atan(-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
    [grid, 50, 50], [gnuplot_pm3d, true],
    [gnuplot_preamble, my_preamble])$

../figures/plotting17

 
(%i10) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
    [gnuplot_preamble, "set view map; unset surface"],
    [gnuplot_pm3d, true], [grid, 150, 150])$

../figures/plotting18

Função: plot3d (expr, x_range, y_range, ..., options, ...)
Função: plot3d (name, x_range, y_range, ..., options, ...)
Função: plot3d ([expr_1, expr_2, expr_3], x_rge, y_rge)
Função: plot3d ([name_1, name_2, name_3], x_range, y_range, ..., options, ...)

Mostra um gráfico de uma ou três expressões como funções de duas variáveis.

 
(%i1) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -7, 7]);

../figures/plotting19

monta o gráfico de z = 2^(-u^2+v^2) com u e v variando no intervalo fechado [-3,3] e no intervalo fechado de [-2,2] respectivamente, e com u sobre o eixo x, e v sobre o eixo y.

O mesmo gráfico pode ser visualizado usando openmath:

 
(%i2)  plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2],
               [plot_format, openmath]);

../figures/plotting25

nesse caso o mouse pode ser usado para rotacionar a visualização para olhar na superfície de diferentes ângulos.

Um exemplo do terceiro modelo de argumento é

 
(%i3) plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)),
   y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]);

../figures/plotting20

que monta o gráfico da banda de Moebius, parametrizada por três expressões fornecidas como o primeiro argumento para plot3d. Um adicional e opcional argumento ['grid, 50, 15] fornece o número de retâgulos da grade na direção x e na direção y.

Uma função a ter seu gráfico montado pode ser especificada como o nome de uma função Maxima ou como o nome de uma função Lisp ou como um operador, como uma expressão lambda do Maxima, ou como uma expressão geral do Maxima. Se especificada como um nome ou como expressão lambda, a função deve ser uma função de um argumento.

Esse exemplo mostra uma montagem de gráfico da parte real de z^1/3.

 
(%i4) plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
      ['grid, 12, 80], ['transform_xy, polar_to_xy],
      ['view_direction, 1, 1, 1.4], ['colour_z, true]);

../figures/plotting21

Aqui a opção view_direction indica a direção da qual nós pegamos a projeção. Nós atualmente fazemos isso de infinitamente distante, mas paralelo à linha de view_direction para a orígem. Isso é correntemente usado somente em plot_format ps, uma vez que outros visualizadores permitem rotação interativa do objeto.

Outro exemplo é uma superfície de Klein:

 
(%i5) expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
      + 3.0) - 10.0$
(%i6) expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
      + 3.0)$
(%i7) expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))$

(%i8) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
      [y, -%pi, %pi], ['grid, 40, 40]);

../figures/plotting22

e um toro

 
+(%i9) expr_1: cos(y)*(10.0+6*cos(x))$
+(%i10) expr_2: sin(y)*(10.0+6*cos(x))$
+(%i11) expr_3: -6*sin(x)$
+(%i12) plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi],       [y, 0, 2*%pi], ['grid, 40, 40]);

../figures/plotting23

Algumas vezes isso é necessário para definir uma função para montar o graico da expressão. Todos os argumentos para plot3d são avaliados antes de serem passados para plot3d, e então tentando fazer um expressão que faz apenas o que é preciso pode ser difícil, e é apenas mais fácil fazer uma função.

 
(%i13) M: matrix([1, 2, 3, 4], [1, 2, 3, 2], [1, 2, 3, 4],
       [1, 2, 3, 3])$
(%i14) f(x, y) := float (M [?round(x), ?round(y)])$
(%i15) plot3d (f, [x, 1, 4], [y, 1, 4], ['grid, 4, 4])$

../figures/plotting24

Veja plot_options para mais exemplos.

Função: make_transform (vars, fx, fy, fz)

Retornam uma função adequada para a função transformação em plot3d. Use com a opção de montagem de gráfico transform_xy.

 
make_transform ([r, th, z], r*cos(th), r*sin(th), z)$

é uma transformação para coordenadas polares.

Função: plot2d_ps (expr, range)

Escreve para pstream uma seqüência de comandos PostScript que montam o graáfico de expr sobre range.

expr é uma expressão. range é uma lista da forma [x, min, max] na qual x é uma variável que aparece em expr.

Veja também closeps.

Função: closeps ()

Essa poderá usualmente ser chamada no final de um seqüência comandos de montagem de gráfico. Isso fecha o fluxo corrente de saída pstream, e altera esse para nil. Isso também pode ser chamado ao iniciar uma montagem de gráfico, para garantir que pstream será fechado se estiver aberto. Todos os comandos que escrevem para pstream, abrem isso se necessário. closeps é separada de outros comandos de montagem de gráfico, posteriormente podemos querer montar um gráfico com 2 amplitudes ou sobrepor muitas montagens de gráficos, e então devemos manter esse fluxo aberto.

Função: set_plot_option (opção)

Atribui uma das varáveis globais para impressão. option é especificada como uma lista de dois ou mais elementos, na qual o primeiro elemeto é uma das palavras chave dentro da lista plot_options.

set_plot_option avalia seu argumento. set_plot_option retorna plot_options (após modificar um desses elementos).

Veja também plot_options, plot2d, e plot3d.

Exemplos:

Modifica a malha (grid) e valores de x. Quando uma palavra chave em plot_options tem um valor atribuído, colocar um apóstrofo evita avaliação.

 
(%i1) set_plot_option ([grid, 30, 40]);
(%o1) [[x, - 1.755559702014E+305, 1.755559702014E+305], 
[y, - 1.755559702014E+305, 1.755559702014E+305], [t, - 3, 3], 
[grid, 30, 40], [view_direction, 1, 1, 1], [colour_z, false], 
[transform_xy, false], [run_viewer, true], 
[plot_format, gnuplot], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
[gnuplot_pm3d, false], [gnuplot_preamble, ], 
[gnuplot_curve_titles, [default]], 
[gnuplot_curve_styles, [with lines 3, with lines 1, 
with lines 2, with lines 5, with lines 4, with lines 6, 
with lines 7]], [gnuplot_default_term_command, ], 
[gnuplot_dumb_term_command, set term dumb 79 22], 
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
eps enhanced color solid 24]]
(%i2) x: 42;
(%o2)                          42
(%i3) set_plot_option (['x, -100, 100]);
(%o3) [[x, - 100.0, 100.0], [y, - 1.755559702014E+305, 
1.755559702014E+305], [t, - 3, 3], [grid, 30, 40], 
[view_direction, 1, 1, 1], [colour_z, false], 
[transform_xy, false], [run_viewer, true], 
[plot_format, gnuplot], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
[gnuplot_pm3d, false], [gnuplot_preamble, ], 
[gnuplot_curve_titles, [default]], 
[gnuplot_curve_styles, [with lines 3, with lines 1, 
with lines 2, with lines 5, with lines 4, with lines 6, 
with lines 7]], [gnuplot_default_term_command, ], 
[gnuplot_dumb_term_command, set term dumb 79 22], 
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
eps enhanced color solid 24]]
Função: psdraw_curve (ptlist)

Desenha uma curva conectando os pontos em ptlist. O último pode ser da forma [x0, y0, x1, y1, ...] ou da forma [[x0, y0], [x1, y1], ...]

A função join é útil fazendo uma lista dos x's e uma lista dos y's e colocando-os juntos.

psdraw_curve simplesmente invoca a mais primitiva função pscurve. Aqui está a definiçã:

 
(defun $psdraw_curve (lis)
  (p "newpath")
  ($pscurve lis)
  (p "stroke"))

Função: pscom (cmd)

cmd é inserida no arquivo PostScript. Exemplo:

 
pscom ("4.5 72 mul 5.5 72 mul translate 14 14 scale");

[ << ] [ >> ]           [Top] [Contents] [Índice] [ ? ]

This document was generated by root on Novembro, 10 2006 using texi2html 1.76.