@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Plotting.texi/1.41/Fri Jun  8 17:19:03 2007/-ko/
@iftex
@hyphenation{ca-rac-te-res}
@end iftex
@menu
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos::    
@end menu

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos,  , Montando Gr@'{a}ficos, Montando Gr@'{a}ficos
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos

@deffn {Fun@value{cedilha}@~{a}o} contour_plot (@var{expr}, @var{x_range}, @var{y_range}, @var{op@value{cedilha}@~{o}es}, ...)

Monta gr@'{a}ficos de contorno (curvas de n@'{i}vel) de @var{expr}
sobre a regi@~{a}o @var{x_range} por @var{y_range}.
Quaisquer argumentos adicionals s@~{a}o tratados da mesma forma que em @code{plot3d}.

@code{contour_plot} somente trabalha quando o formato do gr@'{a}fico for @code{gnuplot} ou @code{gnuplot_pipes}.

Veja tamb@'{e}m @code{implicit_plot}.

Exemplos:

@c ===beg===
@c contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4]);
@c contour_plot (sin(y) * cos(x)^2, [x, -4, 4], [y, -4, 4]);
@c F(x, y) := x^3 + y^2;
@c contour_plot (F, [u, -4, 4], [v, -4, 4]);
@c contour_plot (F, [u, -4, 4], [v, -4, 4], [gnuplot_preamble, "set size ratio -1"]);
@c set_plot_option ([gnuplot_preamble, "set cntrparam levels 12"])$
@c contour_plot (F, [u, -4, 4], [v, -4, 4]);
@c ===end===
@example
(%i1) contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4]);
(%o1) 
(%i2) contour_plot (sin(y) * cos(x)^2, [x, -4, 4], [y, -4, 4]);
(%o2) 
(%i3) F(x, y) := x^3 + y^2;
                                   3    2
(%o3)                  F(x, y) := x  + y
(%i4) contour_plot (F, [u, -4, 4], [v, -4, 4]);
(%o4) 
(%i5) contour_plot (F, [u, -4, 4], [v, -4, 4], [gnuplot_preamble, "set size ratio -1"]);
(%o5) 
(%i6) set_plot_option ([gnuplot_preamble, "set cntrparam levels 12"])$

(%i7) contour_plot (F, [u, -4, 4], [v, -4, 4]);
@end example

@end deffn

@c INSPECTING src/plot.lisp AND TRYING SOME EXAMPLES,
@c IT APPEARS THAT in_netmath HAS NO EFFECT ON plot2d
@c AND ONLY EFFECT ON plot3d IS TO CAUSE OPENMATH OUTPUT TO BE WRITTEN TO CONSOLE
@c WHEN [plot_format, openmath] IS SET.
@c NOT CONVINCED WE REALLY WANT TO DOCUMENT THIS VARIABLE
@defvr {Vari@'{a}vel} in_netmath
Valor padr@~{a}o: @code{false}

Quando @code{in_netmath} @'{e} @code{true},
@code{plot3d} imprime uma sa@'{i}da OpenMath para o console se @code{plot_format} @'{e} @code{openmath};
caso contr@'{a}rio @code{in_netmath} (mesmo se @code{true}) n@~{a}o tem efeito.
@code{in_netmath} n@~{a}o tem efeito sobre @code{plot2d}.

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} plot2d (@var{expr}, @var{x_range}, ..., @var{op@value{cedilha}@~{o}es}, ...)
@deffnx {Fun@value{cedilha}@~{a}o} plot2d ([@var{expr_1}, ..., @var{expr_n}], ..., @var{op@value{cedilha}@~{o}es}, ...)
@deffnx {Fun@value{cedilha}@~{a}o} plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range},..., @var{op@value{cedilha}@~{o}es}, ...)

onde @var{expr}, @var{expr_1}, ..., @var{expr_n} pode ser uma entre
express@~{o}es, ou fun@value{cedilha}@~{o}es do Lisp ou do Maxima ou operadores, ou uma lista com
qualquer das formas: @code{[discrete, [@var{x1}, ..., @var{xn}],
[@var{y1}, ..., @var{yn}]]}, @code{[discrete, [[@var{x1}, @var{y1}],
..., [@var{xn}, ..., @var{yn}]]} ou @code{[parametric, @var{x_expr},
@var{y_expr}, @var{t_range}]}.

Mostra um gr@'{a}fico de uma ou mais express@~{o}es como uma fun@value{cedilha}@~{a}o de uma
vari@'{a}vel.

@code{plot2d} monta o gr@'{a}fico da express@~{a}o @var{expr} ou muitas express@~{o}es
@code{[@var{name_1}, ..., @var{name_n}]}. As express@~{o}es que n@~{a}o forem
param@'{e}tricas ou discretas podem todas depender somente de uma
vari@'{a}vel @var{var} e isso torna obrigat@'{o}rio o uso de @var{x_range} para
nome daquela vari@'{a}vel e fornece seus valores de m@'{a}ximo e de m@'{i}nimo, usando a
sintaxe: @code{[@var{variable}, @var{min}, @var{max}]}. O gr@'{a}fico ir@'{a}
mostrar o eixo horizontal associado aos valores de @var{min} e de @var{max}.

Uma express@~{a}o a ser montado o gr@'{a}fico pode tamb@'{e}m ser fornecida na forma discreta ou
na forma param@'{e}trica. A saber, como uma lista iniciando-se com a palavra ``discrete''
ou a palavra ``parametric''. A palavra chave @var{discrete} deve ser seguida por duas
listas de valores, ambas com o mesmo comprimento, que s@~{a}o as coodenadas horizontais e
as coordenadas verticais de um conjunto de pontos; alternativamente, as coordenadas
de cada ponto pode ser colocada dentro de uma lista com dois valores, e todas as
coordenadas dos pontos podem estar dentro de outra lista. A palavra chave
@var{parametric} deve ser seguida por douas express@~{o}es @var{x_expr} e
@var{y_expr}, e um intervalo da forma @code{[@var{param}, @var{min},
@var{max}]}. As duas express@~{o}es devem depender somente do par@^{a}metro
@var{param}, e o gr@'{a}fico ir@'{a} mostrar o caminho percorrido pelo ponto
com coordenadas (@var{x_expr}, @var{y_expr}) com @var{param} variando
de @var{min} a @var{max}.

O intervalo do eixo vertical n@~{a}o @'{e} obrigat@'{o}rio. @'{E} somente mais uma das
op@value{cedilha}@~{o}es para o comando, com a sintaxe: @code{[y, @var{min},
@var{max}]}. Se aquela op@value{cedilha}@~{a}o for usada, o gr@'{a}fico ir@'{a} mostrar aquele intervalo
completo, mesmo se a express@~{a}o n@~{a}o ocupe todo aquele intervalo. De outra forma,
se um intervalo vertical n@~{a}o for especificado atrav@'{e}s de @code{set_plot_option}, as
extremidade do eixo vertical ser@~{a}o encontrada automaticamente.

Todas as outras op@value{cedilha}@~{o}es podem tamb@'{e}m serem listas, iniciando-se com o nome da
op@value{cedilha}@~{a}o. A op@value{cedilha}@~{a}o @var{xlabel} pode ser usada para fornecer um @'{o}tulo para o
eixo horizontal; se aquela op@value{cedilha}@~{a}o n@~{a}o for usada, o eixo horizontal ir@'{a}
ser rotulado com o nome da vari@'{a}vel especificada em @var{x_range}, ou
com a express@~{a}o @var{x_expr} no caso de apenas uma express@~{a}o
param@'{e}trica, ou isso ir@'{a} ser deichado em branco de outra forma.

Um r@'{o}tulo para o eixo vertical pode ser fornecido com a op@value{cedilha}@~{a}o
@var{ylabel}. Se existir somente uma express@~{a}o a ser montado o gr@'{a}fico e a
op@value{cedilha}@~{a}o @var{ylabel} n@~{a}o tiver sido usada, o eixo vertical ir@'{a} ser rotulado com
aquela express@~{a}o, a menos que ela seja muito larga, ou com a express@~{a}o
@var{y_expr} se a express@~{a}o for param@'{e}trica, ou com o texto
``discrete data'' se a express@~{a}o for discreta.

As op@value{cedilha}@~{o}es @code{[logx]} e @code{[logy]} n@~{a}o precisam de quaisquer
par@^{a}metros. Elas ir@~{a}o tornar os eixos horizontal e vertical sejam
escritos em escala logar@'{i}tmica.

Se houverem muitas express@~{o}es para serem montados os gr@'{a}ficos respectivos, uma legenda ir@'{a} ser
escrita para identificar cada uma das express@~{o}es. Os r@'{o}tulos que podem ser
usados naquela legenda podem ser fornecidos com a op@value{cedilha}@~{a}o @var{legend}. Se a op@value{cedilha}@~{a}o @var{legend}
n@~{a}o for usada, Maxima ir@'{a} criar r@'{o}tulos a partir das express@~{o}es.

Por padr@~{a}o, as express@~{o}es ter@~{a}o seus gr@'{a}ficos montados como um conjunto de segmentos de reta
saltando pontos adjacentes dentro de um conjunt de pontos que @'{e} um dos fornecidos entre
a forma @var{discrete}, ou calculado automaticamente a partir da express@~{a}o
fornecida, usando um algor@'{i}tmo que automaticamente adapta os passos entre
os pontos usando como uma estimativa inicial do total n@'{u}mero de pontos
o conjunto de valores com a op@value{cedilha}@~{a}o @var{nticks}. A op@value{cedilha}@~{a}o @var{style} pode ser
usada para fazer uma das express@~{o}es serem representadas como um conjunto de
pontos isolados, ou como pontos e segmentos de reta.

Existem muitas op@value{cedilha}@~{o}es globais armazenadas na lsita @var{plot_options}
que pode ser modificada com a fun@value{cedilha}@~{a}o @code{set_plot_option}; qualque
daquelas op@value{cedilha}@~{o}es globais pode ser sobrescrita com op@value{cedilha}@~{o}es fornecidas no
comando @var{plot2d}.

Uma fun@value{cedilha}@~{a}o a ter seu gr@'{a}fico montado pode ser especificada como o nome de uma fun@value{cedilha}@~{a}o
do Maxima ou do Lisp ou um operador, uma express@~{a}o lambda do Maxima, ou uma express@~{a}o
geral do Maxima.  Se especificado como um nome ou uma express@~{a}o lambda, a
fun@value{cedilha}@~{a}o deve ser uma fun@value{cedilha}@~{a}o de um argumento.

@c PUT EXAMPLES FOR PRECEDING SIMPLE FORMS OF plot2d HERE
@b{Exemplos:}

Gr@'{a}ficos de fun@value{cedilha}@~{o}es comuns.

@c ===beg===
@c plot2d (sin(x), [x, -%pi, %pi])$
@c ===end===
@example
(%i1) plot2d (sin(x), [x, -%pi, %pi])$
@end example

@ifnotinfo
@image{../figures/plotting6,8cm}
@end ifnotinfo

@c ===beg===
@c plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
@c ===end===
@example
(%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
@end example

@ifnotinfo
@image{../figures/plotting7,8cm}
@end ifnotinfo

Montando gr@'{a}fico de fun@value{cedilha}@~{o}es pelo nome.

@c ===beg===
@c F(x) := x^2 $
@c :lisp (defun |$g| (x) (m* x x x))
@c H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
@c plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
@c ===end===
@example
(%i1) F(x) := x^2 $
@group
(%i2) :lisp (defun |$g| (x) (m* x x x))
$g
@end group
(%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
(%i3) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
@end example

@ifnotinfo
@image{../figures/plotting10,8cm}
@end ifnotinfo

Podemos montar o gr@'{a}fico de um c@'{i}rculo usando um gr@'{a}fico param@'{e}trico com um par@^{a}metro
@var{t}. N@~{a}o @'{e} necess@'{a}rio fornecer um intervalo para intervalo horizontal,
uma vez que o intervalo do par@^{a}metro @var{t} determina o
dom@'{i}nio. Todavia, usaremos a op@value{cedilha}@~{a}o 
@var{same_xy} para obter a mesma escala em ambos os eixos:

@c ===beg===
@c plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
@c          [x, -sqrt(2), sqrt(2)], same_xy)$
@c ===end===
@example
@group
(%i1) plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
         [x, -sqrt(2), sqrt(2)], same_xy)$
@end group
@end example

@ifnotinfo
@image{../figures/plotting12,8cm}
@end ifnotinfo

Exemplo de um gr@'{a}fico logar@'{i}tmico:
@c ===beg===
@c plot2d (exp(3*s), [s, -2, 2], logy)$
@c ===end===
@example
(%i1) plot2d (exp(3*s), [s, -2, 2], logy)$
@end example

@ifnotinfo
@image{../figures/plotting9,8cm}
@end ifnotinfo

Exemplo de gr@'{a}fico discreto, definindo as coordenadas x e y por separado:

@c ===beg===
@c plot2d ([discrete, makelist(i*%pi, i, 1, 5),
@c                            [0.6, 0.9, 0.2, 1.3, 1]])$
@c ===end===
@example
(%i1) plot2d ([discrete, makelist(i*%pi, i, 1, 5),
                            [0.6, 0.9, 0.2, 1.3, 1]])$
@end example

@ifnotinfo
@image{../figures/plotting14,8cm}
@end ifnotinfo

O gr@'{a}fico de pontos pode ser mostrado juntamente com um gr@'{a}fico da
fun@value{cedilha}@~{a}o teor@'{e}tica/doutrin@'{a}ria/est@'{e}tica que prev@^{e} as coordenads dos pontos:

@c ===beg===
@c xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
@c plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
@c         [style, points, lines], [color, red, blue],
@c         [point_type, asterisk],
@c         [legend, "experiment", "theory"],
@c         [xlabel, "pendulum's length (cm)"],
@c         [ylabel, "period (s)"])$
@c ===end===
@example
(%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
@group
(%i2) plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
        [style, points, lines], [color, red, blue],
        [point_type, asterisk],
        [legend, "experiment", "theory"],
        [xlabel, "pendulum's length (cm)"],
        [ylabel, "period (s)"])$
@end group
@end example

@ifnotinfo
@image{../figures/plotting16,8cm}
@end ifnotinfo

Veja tamb@'{e}m @code{plot_options}, que descreve op@value{cedilha}@~{o}es de montagem de gr@'{a}fico e tem mais exemplos.

@end deffn


@defvr {Vari@'{a}vel de sistema} plot_options
Elementos dessa lista estabelecem as op@value{cedilha}@~{o}es padr@~{a}o para a montagem do gr@'{a}fico.
Se uma op@value{cedilha}@~{a}o est@'{a} presente em uma chamada a @code{plot2d} ou @code{plot3d},
esse valor tem preced@^{e}ncia sobre a op@value{cedilha}@~{a}o padr@~{a}o.
De outra forma, o valor em @code{plot_options} @'{e} usado.
Op@value{cedilha}@~{o}es padr@~{a}o s@~{a}o atribu@'{i}das por @code{set_plot_option}.

Cada elemento de @code{plot_options} @'{e} uma lista de dois ou mais @'{i}tens.
O primeiro item @'{e} o nome de uma op@value{cedilha}@~{a}o, e os restantes compreendem o valor ou valores
atribu@'{i}dos @`a op@value{cedilha}@~{a}o.
Em alguns casos, o valor atribu@'{i}do @'{e} uma lista, que pode compreender muitos @'{i}tens.

As op@value{cedilha}@~{o}es de montagem de gr@'{a}fico que s@~{a}o reconhecidas por @code{plot2d} e @code{plot3d} s@~{a}o as seguintes:

@itemize @bullet
@item
Op@value{cedilha}@~{a}o: @code{plot_format}

Determina qual interface gr@'{a}fica @'{e} usada por @code{plot2d} e por
@code{plot3d}.

@itemize @bullet
@item
Valor: @code{gnuplot} padr@~{a}o para windows

Gnuplot @'{e} o mais avan@value{cedilha}ado pacote de montagem de gr@'{a}ficos entre os pacotes
dispon@'{i}veis no Maxima. Esse valor requer uma instala@value{cedilha}@~{a}o externa do gnuplot.
@item
Valor: @code{gnuplot_pipes} padr@~{a}o nas plantaformas n@~{a}o windows

Similar ao formato @code{gnuplot} exceto que a comunica@value{cedilha}@~{a}o com o
gnuplot @'{e} realizada atrav@'{e}s de um pipe. Esse valor pode ser usado para montar um gr@'{a}fico na tela,
para redirecionar a sa@'{i}da do gr@'{a}fico para um arquivos @'{e} melhor usar o formato @code{gnuplot}.
@item
Valor: @code{mgnuplot}

Mgnuplot @'{e} um ambiente montado em volta do gnuplot baseado no Tk.  Esse ambiente est@'{a} inclu@'{i}do na
distribu@'{i}@value{cedilha}@~{a}o do Maxima.  Mgnuplot oferece uma GUI rudimentar para o gnuplot,
mas tem menos recursos em geral que a interface plana do
gnuplot.  Mgnuplot requer uma instala@value{cedilha}@~{a}o externa do gnuplot e
Tcl/Tk.
@item
Valor: @code{openmath}

Openmath @'{e} um programa gr@'{a}fico escrito em Tcl/Tk. Este formato @'{e} fornecido pelo pacote
Xmaxima, que @'{e} distribu@'{i}do junto com Maxima; com o objetivo de usar esse
formato voc@^{e} pode instalar o pacote Xmaxima, e o Openmath ir@'{a} trabalhar n@~{a}o somente
a partir do Xmaxima em si mesmo, mas tamb@'{e}m a apartir da linha de comando e outras GUI's para
o Maxima.
@end itemize

@item
Op@value{cedilha}@~{a}o: @code{run_viewer}

Controla se o visualizador apropriado para o formato da montagem do gr@'{a}fico pode ou n@~{a}o
ser executado.

@itemize @bullet
@item
@c DOES FALSE IMPLY THE OUTPUT FILE IS GENERATED AND NOT SHOWN ?? OR IS NOTHING GENERATED ??
Valor padr@~{a}o: @code{true}
 
Executa o programa visualizador.
@item
Valor: @code{false}

N@~{a}o executa o programa visualizador.
@end itemize

@item
Op@value{cedilha}@~{a}o: @code{y}

O intervalo vertical do gr@'{a}fico.

Exemplo:

@example
[y, - 3, 3]
@end example
Especifica intervalo vertical para [-3, 3].

@item
Op@value{cedilha}@~{a}o: @code{plot_realpart}

Quando @code{plot_realpart} for @code{true},
a parte real de um valor complexo @var{x} @'{e} mostrada;
isso @'{e} equivalente a mostrar @code{realpart(@var{x})} em lugar de @var{x}.
De outra forma,
somente valores com a parte imagin@'{a}ria igual a 0 s@~{a}o mostrados na tela,
e valores complexos s@~{a}o ignorados.

Exemplo:

@example
plot2d (log(x), [x, -5, 5], [plot_realpart, false]);
plot2d (log(x), [x, -5, 5], [plot_realpart, true]);
@end example
O valor padr@~{a}o @'{e} @code{false}.

@item
Op@value{cedilha}@~{a}o: @code{nticks}

Em plot2d, essa op@value{cedilha}@~{a}o @'{e} fornece o n@'{u}mero inicial de pontos usado pela
rotina adaptativa de montagem de gr@'{a}ficos para fun@value{cedilha}@~{o}es de montagem de gr@'{a}fico. Ess n@'{u}mero inicial de pontos @'{e} tamb@'{e}m
o n@'{u}mero de pontos que isr@'{a} ser mostrado em um gr@'{a}fico param@'{e}trico.

Exemplo:

@example
[nticks, 20]
@end example
O padr@~{a}o para @code{nticks} @'{e} 10.

@item
Op@value{cedilha}@~{a}o: @code{adapt_depth}

O n@'{u}mero maximo de quebras usada pela rotina adaptativa de montagem do gr@'{a}fico.

Exemplo:

@example
[adapt_depth, 5]
@end example
O padr@~{a}o para @code{adapt_depth} @'{e} 10.

@item
Op@value{cedilha}@~{a}o: @code{xlabel}

O r@'{o}tulo para o eixo horizontal em um gr@'{a}fico bidimensional.

Exemplo:
@example
[xlabel, "Time in seconds"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{ylabel}

O r@'{o}tulo do eixo vertical em gr@'{a}ficos bidimensionais.

Exemplo:
@example
[ylabel, "Temperatura"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{logx}

Essa op@value{cedilha}@~{a}o faz com que o eixo horizontal de um gr@'{a}fico bidimensional seja desenhado
em propor@value{cedilha}@~{a}o logar@'{i}tmica. Essa op@value{cedilha}@~{a}o n@~{a}o precisa de quaisquer par@^{a}metros adicionais.

@item
Op@value{cedilha}@~{a}o: @code{logy}

Essa op@value{cedilha}@~{a}o faz com que o eixo vertical de um gr@'{a}fico bidimensional seja desenhado
em propor@value{cedilha}@~{a}o logar@'{i}tmica. Essa op@value{cedilha}@~{a}o n@~{a}o precisa de quaisquer par@^{a}metros adicionais.

@item
Op@value{cedilha}@~{a}o: @code{legend}

Os r@'{o}tulos para v@'{a}rias express@~{o}es em um gr@'{a}fico bidimensional com muitas
express@~{o}es. Se houverem mais express@~{o}es que o n@'{u}mero de r@'{o}tulos
fornecidos, eles ir@~{a}o ser repetidos. Por padr@~{a}o, os nomes das express@~{o}es
ou fun@value{cedilha}@~{o}e ir@~{a}o ser usados, ou as palavras discrete1, discrete2, ..., para
conjuntos discretos de pontos.

Exemplo:
@example
[legend, "Conj 1", "Conj 2", "Conj 3"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{style}

Os estilos que ir@~{a}o ser usados para v@'{a}rias fun@value{cedilha}@~{o}es ou conjuntos de dados
em um gr@'{a}fico bidimensional. A palavra @var{style} deve ser seguida por um ou mais
estilos. Se houverem mais fun@value{cedilha}@~{o}es e conjuntos de pontos que estilos
fornecidos, os estilos ir@~{a}o ser repetidos. Cada estilo pode ser um entre os seguintes
@var{lines} para segmentos de reta, @var{points} para pontos isolados,
@var{linespoints} para segmentos e pontos, ou @var{dots} para pequenos
pontos isolados. Gnuplot aceita tamb@'{e}m o estilo @var{impulses}.

Cada um dos estilos pode tamb@'{e}m ser fechado dentro de uma lista com alguns par@^{a}metros
adicionais. @var{lines} aceita um ou dois n@'{u}meros: a largura da
linha e um inteiro que identifica uma cor. @var{points} aceita um ou
dois par@^{a}metros; o primeiro par@^{a}metro @'{e} o raio dos pontos e
o segundo par@^{a}metro @'{e} um inteiro que para o Gnuplot seleciona diferentes
ajustes e cores para os ponots e em Openmath modifica a cor
usada para os pontos. @var{linesdots} aceita at@'{e} quatro par@^{a}metros;
os primerios dois possuem o mesmo significado que em @var{lines} e os @'{u}ltimos dois possuem o mesmo
significado que em @var{points}.

Exemplo:
@example
[style,[lines,2,3],[points,1,4]]
@end example

No Gnuplot, esse exemplo ir@'{a} montar o gr@'{a}fico da primeira (e terceira, quinta, etc)
express@~{a}o com segmentos de retas azuis de largura 2, ea segunda (e
quarta, sexta, etc) express@~{a}o com quadrados verdes de tamanho 1. No
Openmath, a primeira express@~{a}o ir@'{a} ser mostrada com segmentos da cor magenta de
largura 2, e o segundo com pontos alaranjados de raio 1; note que
openmath_color(3) openmath_color(4) retornam ``magenta'' e
``orange'' (alaranjado).

O padr@~{a}o para a op@value{cedilha}@~{a}o de estilo @'{e} @var{lines} com largura 1, e
diferentes cores.

@item
Op@value{cedilha}@~{a}o: @code{grid}

Escolhe o n@'{u}mero de pontos da grade para usar nas dire@value{cedilha}@~{o}es x e y
para montagem de gr@'{a}ficos tridimensionais.

Exemplo:
@example
[grid, 50, 50]
@end example
Escolhe a grade para 50 por 50 pontos.  A grade padr@~{a}o @'{e} 30 por 30.

@item
Op@value{cedilha}@~{a}o: @code{transform_xy}

Permite que transforma@value{cedilha}@~{o}es sejam aplicadas @`a montagem de gr@'{a}ficos tridimensionais.

Exemplo:
@example
[transform_xy, false]
@end example
O valor padr@~{a}o de @code{transform_xy} @'{e} @code{false}.  Se o valor padr@~{a}o de @code{transform_xy} n@~{a}o @'{e} @code{false}, pode ser
a sa@'{i}da de

@example
make_transform ([x, y, z], f1(x, y, z), f2(x, y, z), f3(x, y, z))$
@end example
A transforma@value{cedilha}@~{a}o @code{polar_xy} @'{e} previamente definida no Maxima.  Isso fornece a mesma
transforma@value{cedilha}@~{a}o que
@example
make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
@end example
@end itemize

@b{Op@value{cedilha}@~{o}es do Gnuplot:}

Existem muitas op@value{cedilha}@~{o}es de montagem de gr@'{a}fico espec@'{i}ficas para gnuplot.  Algumas dessas
op@value{cedilha}@~{o}es s@~{a}o naturais do gnuplot, especificados como seq@"{u}@^{e}ncias de caracteres. Consulte a
documenta@value{cedilha}@~{a}o do gnuplot para mais detalhes.

@itemize @bullet
@item
Op@value{cedilha}@~{a}o: @code{gnuplot_term}

Escolhe a sa@'{i}da para o tipo terminal para o gnuplot.
@itemize @bullet
@item
Valor padr@~{a}o: @code{default}

A sa@'{i}da do Gnuplot @'{e} mostrada em uma janela gr@'{a}fica separada.

@item
Valor: @code{dumb}

A s@'{i}da do Gnuplot @'{e} mostrada no console do Maxima por meio de uma "concep@value{cedilha}@~{a}o art@'{i}stica em ASCII" aproximada para gr@'{a}ficos.

@item
Valor: @code{ps}

Gnuplot gera comandos na linguagem PostScript de descri@value{cedilha}@~{a}o de p@'{a}gina.
Se a op@value{cedilha}@~{a}o
@code{gnuplot_out_file} for escolhida para @var{nomearquivo}, gnuplot escreve os comandos PostScript em @var{nomearquivo}.
De outra forma, Esse arquivo @'{e} salvo com o nome @code{maxplot.ps}.

@item
Valor: qualquer outra especifica@value{cedilha}@~{a}o v@'{a}lida do terminal @code{term} do gnuplot

Gnuplot pode gerar sa@'{i}das em muitos outros formatos gr@'{a}ficos tais
como png, jpeg, svg etc.  Paa criar gr@'{a}ficos em todos esses formatos a op@value{cedilha}@~{a}o
@code{gnuplot_term} pode ser escolhida para qualquer terminalsuportado pelo gnuplot (s@'{i}mbolo)
ou mesmo especifica@value{cedilha}@~{a}o completa de terminal do gnuplot com quaisquer op@value{cedilha}@~{o}es (seq@"{u}@^{e}ncia de caracteres).
Por exemplo @code{[gnuplot_term,png]} cria sa@'{i}das no formato PNG (Portable
+Network Graphics) enquanto @code{[gnuplot_term,"png size 1000,1000"]}
cria PNG de tamanho 1000x1000 pixels. 
Se a op@value{cedilha}@~{a}o @code{gnuplot_out_file} for escolhida para @var{nomearquivo}, gnuplot 
escreve a sa@'{i}da para @var{nomearquivo}. De outra forma, esse arquivo @'{e} gravado com o nome de
@code{maxplot.@var{term}}, onde @var{term} @'{e} o nome do terminal do
gnuplot .
@end itemize

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_out_file}

Escreve a sa@'{i}da do gnuplot para um arquivo.

@itemize @bullet
@item
Valor padr@~{a}o: @code{false}

Nenhum arquivo de sa@'{i}da especificado.
@item
Valor: @var{nomearquivo}

Exemplo: @code{[gnuplot_out_file, "meugrafico.ps"]}
Esse exemplo envia a sa@'{i}da PostScript para o arquivo @code{meugrafico.ps} quando
usada conjuntamente com o terminal PostScript do gnuplot.
@c DOES OUTPUT FILE != FALSE IMPLY DON'T RUN THE VIEWER ??
@c WHAT HAPPENS IF OUTPUT FILE IS SPEFICIED BUT TERMINAL IS NOT PS ??
@end itemize

@item
Op@value{cedilha}@~ao: @code{gnuplot_pm3d}

Controla o uso do modo PM3D, que tem recursos
avan@value{cedilha}ados em 3D.  PM3D est@'{a} somente dispon@'{i}vel no gnuplot em vers@~{o}es ap@'{o}s a 3.7.  O
valor padr@~{a}o para @code{gnuplot_pm3d} @'{e} @code{false}.

Exemplo:

@example
[gnuplot_pm3d, true]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_preamble} 

Insere comandos antes que o gr@'{a}fico seja
desenhado.  Quaisquer comandos v@'{a}lidos para o gnuplot podem ser usados.  Multiplos comandos
podem ser separados com um ponto e v@'{i}rgula.  O exemplo mostrado produz uma
escala num@'{e}rica na montagem do gr@'{a}fico.  O valor padr@~{a}o para @code{gnuplot_preamble} @'{e} uma seq@"{u}@^{e}ncia de caracteres vazia @code{""}.

Exemplo:

@example
[gnuplot_preamble, "set log y"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_curve_titles}

Controla os t@'{i}tulos dados na chave da montagem do gr@'{a}fico.  O
valor padr@~{a}o @'{e} @code{[default]}, que automaticamente escolhe o t@'{i}tulo de cada
curva para a fun@value{cedilha}@~{a}o cujo gr@'{a}fico est@'{a} sendo constru@'{i}do. Se n@~{a}o contiver @code{[default]}, @code{gnuplot_curve_titles}
pode conter uma lista de seq@"{u}@^{e}ncias de caracteres,
cada uma das quais @'{e} @code{"title '@var{title_string}'"}.
(Para disabilitar a chave de impress@~{a}o de gr@'{a}fico, adicione @code{"set nokey"} a @code{gnuplot_preamble}.)

Exemplo:

@example
[gnuplot_curve_titles,
["title 'Minha primeira fun@value{cedilha}@~{a}o'", "title 'Minha segunda fun@value{cedilha}@~{a}o'"]]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_curve_styles}

Uma lista de seq@"{u}@^{e}ncias de caracteres controlando a apar@^{e}ncia
das curvas, i.e., cor, largura, brilho, etc., para serem enviadas para o
comando de montagem do gr@'{a}fico do gnuplot.  O valor padr@~{a}o @'{e}
@code{["with lines 3", "with lines 1", "with lines 2", "with lines 5", "with lines 4", "with lines 6", "with lines 7"]}, que circula atrav@'{e}s de diferentes cores.  Veja a
documenta@value{cedilha}@~{a}o do gnuplot de @code{plot} para maiores informa@value{cedilha}@~{o}es.

Exemplo:

@example
[gnuplot_curve_styles, ["with lines 7", "with lines 2"]]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_default_term_command}

O comando gnuplot para escolher o
tipo de terminal para o terminal padr@~{a}o. O valor padr@~{a}o @'{e} @code{set
term windows "Verdana" 15} em sistemas windows, e @code{set term x11
font "Helvetica,16"} em sistemas de janelas do X11.
 
Exemplo:

@example
[gnuplot_default_term_command, "set term x11"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_dumb_term_command}

O comando gnuplot para escolher o
tipo de terminal para o terminal dumb.  O valor padr@~{a}o @'{e} @code{"set term dumb 79 22"},
que faz a sa@'{i}da texto com 79 caracteres por 22
caracteres.

Exemplo:

@example
[gnuplot_dumb_term_command, "set term dumb 132 50"]
@end example

@item
Op@value{cedilha}@~{a}o: @code{gnuplot_ps_term_command}

O comando gnuplot para escolher o tipo
de terminal para o terminal PostScript.  O valor padr@~{a}o @'{e} 
@code{"set size 1.5, 1.5;set term postscript eps enhanced color solid 24"},
que escolhe o
tamanho para 1.5 vezes o padr@~{a}o do gnuplot, e o tamanho da fonte para 24, al@'{e}m de
outras coisas.  Veja a documenta@value{cedilha}@~{a}o do gnuplot de @code{set term postscript} para mais informa@value{cedilha}@~{a}o.

Exemplo:

Todos os n@'{u}meros nos exemplos para a fun@value{cedilha}@~{a}o @var{plot2d} nesse
manual foram obtidos de arquivos Postscript que foram gerados ap@'{o}s
escolher @code{gnuplot_ps_term_command} como:

@example
[gnuplot_ps_term_command,
"set size 1.3, 1.3; set term postscript eps color solid lw 2.5 30"]
@end example
@end itemize


@end defvr

@deffn {Fun@value{cedilha}@~{a}o} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_range}, @var{y_range}, ..., @var{op@value{cedilha}@~{o}es}, ...)
@deffnx {Fun@value{cedilha}@~{a}o} plot3d (@var{expr}, @var{x_range}, @var{y_range}, ..., @var{op@value{cedilha}@~{o}es}, ...)
@deffnx {Fun@value{cedilha}@~{a}o} plot3d (@var{name}, @var{x_range}, @var{y_range}, ..., @var{op@value{cedilha}@~{o}es}, ...)
@deffnx {Fun@value{cedilha}@~{a}o} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_rge}, @var{y_rge})
@deffnx {Fun@value{cedilha}@~{a}o} plot3d ([@var{nome_1}, @var{nome_2}, @var{nome_3}], @var{x_range}, @var{y_range}, ..., @var{op@value{cedilha}@~{o}es}, ...)

Mostra um gr@'{a}fico de uma ou tr@^{e}s express@~{o}es como fun@value{cedilha}@~{o}es de duas vari@'{a}veis.

@c ===beg===
@c plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
@c         [mesh_lines_color,false])$
@c ===end===
@example
@group
(%i1) plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
        [mesh_lines_color,false])$
@end group
@end example

@ifnotinfo
@image{../figures/plotting17,8cm}
@end ifnotinfo

monta o gr@'{a}fico de @code{u^2-v^2} com @code{u} e @code{v} variando no intervalo fechado [-2,2] e
no intervalo fechado de [-3,3] respectivamente, e com @var{u} sobre o eixo x, e @code{v} sobre o eixo
y.

Outro exemplo @'{e} uma superf@'{i}cie de Klein:

@c ===beg===
@c expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
@c expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
@c expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
@c plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
@c         [y, -%pi, %pi], [grid, 50, 50])$
@c ===end===
@example
(%i1) expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
(%i2) expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
(%i3) expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
@group
(%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
        [y, -%pi, %pi], [grid, 50, 50])$
@end group
@end example

@ifnotinfo
@image{../figures/plotting21,8cm}
@end ifnotinfo

Algumas vezes isso @'{e} necess@'{a}rio para definir uma fun@value{cedilha}@~{a}o para montar o graico da express@~{a}o. Todos
os argumentos para plot3d s@~{a}o avaliados antes de serem passados para plot3d. Tentar
fazer um express@~{a}o que faz apenas o que @'{e} preciso pode ser 
dif@'{i}cil e pode ser mais f@'{a}cil fazer uma fun@value{cedilha}@~{a}o.   

@c ===beg===
@c M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
@c f(x, y) := float('M [round(x), round(y)])$
@c plot3d (f(x,y), [x,1,4],[y,1,4],[grid,3,3],[legend,false])$
@c ===end===
@example
(%i1) M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
(%i2) f(x, y) := float('M [round(x), round(y)])$
@group
(%i3) plot3d (f(x,y), [x,1,4],[y,1,4],[grid,3,3],[legend,false])$
@end group
@end example

@ifnotinfo
@image{../figures/plotting25,8cm}
@end ifnotinfo

Veja @code{plot_options} para mais exemplos.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o}  make_transform (@var{vars}, @var{fx}, @var{fy}, @var{fz})
Retorna uma fun@value{cedilha}@~{a}o adequada para a fun@value{cedilha}@~{a}o transforma@value{cedilha}@~{a}o em plot3d.  Use
com a op@value{cedilha}@~{a}o de montagem de gr@'{a}fico @code{transform_xy}.
@example
make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
@end example
@'{e} uma transforma@value{cedilha}@~{a}o para coordenadas polares.
@end deffn

@deffn {Fun@value{cedilha}@~{a}o}  set_plot_option (@var{op@value{cedilha}@~{a}o})
Atribui uma das var@'{a}veis globais para impress@~{a}o.
@var{op@value{cedilha}@~{a}o} @'{e} especificada como uma lista de dois ou mais elementos,
na qual o primeiro elemento @'{e} uma das palavras chave
dentro da lista @code{plot_options}.

@code{set_plot_option} avalia seu argumento e
retorna a liasta completa @code{plot_options}
(ap@'{o}s modificar um de seus elementos).

Veja tamb@'{e}m @code{plot_options}, @code{plot2d}, e @code{plot3d}.

Exemplos:

Modifica a malha (@code{grid}) e valores de @code{x}.
Quando uma palavra chave em @code{plot_options} tem um valor atribu@'{i}do,
colocar um ap@'{o}strofo evita avalia@value{cedilha}@~{a}o.

@c ===beg===
@c set_plot_option ([grid, 30, 40]);
@c x: 42;
@c set_plot_option (['x, -100, 100]);
@c ===end===

@example
(%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]]
@end example

@end deffn

@subsection Fun@value{cedilha}@~{o}es para trabalhar com o formato @code{gnuplot_pipes}

@deffn {Fun@value{cedilha}@~{a}o} gnuplot_start ()

Abre o pipe para o gnuplot usado para montar um gr@'{a}fico com o formato
@code{gnuplot_pipes}. N@~{a}o @'{e} necess@'{a}rio abrir manualmente o
pipe antes de montar o gr@'{a}fico.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} gnuplot_close ()

Fecha o pipe para o gnuplot que est@'{a} sendo usado com o formato 
@code{gnuplot_pipes}.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} gnuplot_restart ()

Fecha o pipe para o gnuplot que @'{e} usado com o formato 
@code{gnuplot_pipes} e abre um novo pipe.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} gnuplot_replot ()
@deffnx {Fun@value{cedilha}@~{a}o} gnuplot_replot (@var{s})

Atualiza a janela gr@'{a}fica do gnuplot. Se @code{gnuplot_replot} for chamado com um
comando gnuplot em uma seq@"{u}@^{e}ncia de caracteres @var{s}, ent@~{a}o @code{s} @'{e} enviado para o gnuplot
antes de atualizar a janela.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} gnuplot_reset ()

Restaura o estado inicial padr@~{a}o do gnuplot usado com o formato
@code{gnuplot_pipes}. Para atualizar a janela do gnuplot chama @code{gnuplot_replot} ap@'{o}s
@code{gnuplot_reset}.

@end deffn

