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

Aceita uma lista de curvas tais como

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

ou

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

e desenha os seus gráficos. Só funciona se Xmaxima estiver instalado. É similar a xgraph_curves, mas não usando as rotinas do openmath.

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, ..., opções, ...)
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 ([nome_1, ..., nome_n], x_range, y_range)
Função: plot2d ([nome_1, ..., nome_n], x_range)
Função: plot2d (name, x_range, y_range)
Função: plot2d (name, x_range)
Função: plot2d ([expr_1, ..., expr_n], x_range, ..., opções, ...)
Função: plot2d ([..., expr, ..., parametric_expr, ...], x_range, ..., opções)

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. A amplitude vertical é escolhida 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, opções]. Aqui x_expr e y_expr são expressões de 1 variável qualquer que é o primeiro elemento da amplitude t_range. A montagem do gráfico mostra o caminho descrito pelo par [x_expr, y_expr] com x_expr e y_expr variando ambos em t_range.

Parametric plot examples:

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.

Expressões discretas podem também serem usadas 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 si, e usassem pixels grandes. 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_1, expr_2, expr_3], x_range, y_range, ..., opções, ...)
Função: plot3d (expr, x_range, y_range, ..., opções, ...)
Função: plot3d (name, x_range, y_range, ..., opções, ...)
Função: plot3d ([expr_1, expr_2, expr_3], x_rge, y_rge)
Função: plot3d ([nome_1, nome_2, nome_3], x_range, y_range, ..., opções, ...)

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 (se Xmaxima estiver instalado):

 
(%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. O argumento adiconal porém opcional ['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]);

../figures/plotting21

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. Tentar fazer um expressão que faz apenas o que é preciso pode ser difícil e pode ser 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)

Retorna 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: set_plot_option (opção)

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

set_plot_option avalia seu argumento e retorna a liasta completa plot_options (após modificar um de seus 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], [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], 
[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]]

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

This document was generated by Robert Dodier on Maio, 2 2007 using texi2html 1.76.