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

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

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.

Quando a função a ser montado o gráfico é uma função definida no Maxima através de := ou define, ou no Lisp através de DEFUN ou DEFMFUN, a função pode ser especificada pelo nome. Funções definidas em Lisp através de DEFMSPEC, e funções de simplificação, não podem ser especificadas pelo nome; que inclui muitas funções internas.

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

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

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:

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:

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.

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:

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

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:

 
plot2d (sin(x), [x, 0, 2*%pi], [gnuplot_term, ps], [gnuplot_out_file, "sin.eps"])$
 
plot2d ([gamma(x), 1/gamma(x)], [x, -4.5, 5], [y, -10, 10], [gnuplot_preamble, "set key bottom"])$
 
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)"$
plot2d ([cos(x), sin(x), tan(x), cot(x)], [x, -2*%pi, 2*%pi],
    [y, -2, 2], [gnuplot_preamble, my_preamble]);
 
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)"$
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"]);
 
plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 50, 50], [gnuplot_pm3d, true])$
 
my_preamble: "set pm3d at s;unset surface;set contour;set cntrparam levels 20;unset key"$
plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 50, 50],
    [gnuplot_pm3d, true], [gnuplot_preamble, my_preamble])$
 
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])$
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.

 
plot3d (2^(-u^2 + v^2), [u, -5, 5], [v, -7, 7]);

monta o gráfico z = 2^(-u^2+v^2) com u e v variando em [-5,5] e [-7,7] respectivamente, e com u sobre o eixo x, e v sobre o eixo y.

Um terceiro exemplo de modelo de argumento é

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

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.

Quando a função a ser montado o gráfico for uma função definida no Maxima por meio de := ou define, ou em Lisp por meio de DEFUN ou DEFMFUN, a função pode ser especificada através do nome. Funções definidas em Lisp por meio de DEFMSPEC, e funções de simplificação, não podem ser especificadas através do nome; que inclui muitas funções internas.

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

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

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:

 
expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0) - 10.0;
expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0);
expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y));

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

ou um toro

 
expr_1: cos(y)*(10.0+6*cos(x));
expr_2: sin(y)*(10.0+6*cos(x));
expr_3: -6*sin(x);

plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi], [y, 0, 2*%pi], ['grid, 40, 40]);

Podemos também enviar saídas para o gnuplot:

 
plot3d (2^(x^2 - y^2), [x, -1, 1], [y, -2, 2], [plot_format, gnuplot]);

Algumas vezes você precisa definir uma função para mortar o gráfico de uma 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 você que pode ser difícil, e é apenas mais fácil fazer uma função.

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

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 Outubro, 3 2006 using texi2html 1.76.