Next: , Previous: , Up: Top   [Contents][Index]

8 Criação de Gráficos


Previous: , Up: Criação de Gráficos   [Contents][Index]

8.1 Definições para Criação de Gráficos

Variável: in_netmath

Valor por omissão: false

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

Função: plot2d (expr, intervalo_x, ..., opções, ...)
Função: plot2d ([expr_1, ..., expr_n], ..., opções, ...)
Função: plot2d ([expr_1, ..., expr_n], intervalo_x,..., opções, ...)

Onde expr, expr_1, ..., expr_n podem ser expressões, funções ou operadores do Maxima ou do Lisp, ou ainda uma lista da forma [discrete, [x1, ..., xn], [y1, ..., yn]], [discrete, [[x1, y1], ..., [xn, ..., yn]] ou [parametric, expr_x, expr_y, intervalo_t].

Mostra o gráfico de uma ou mais expressões em função de uma variável.

plot2d produz o gráfico de uma expressão expr ou de várias expressões [expr_1, ..., expr_n]. As expressões que não forem do tipo paramétrico ou discreto, deverão depender todas de uma única variável var e será obrigatório usar intervalo_x para indicar o nome dessa variável, e os seus valores mínimo e máximo, usando a sintaxe: [var, min, max]. O gráfico mostrará o eixo horizontal delimitado pelos valores min e max.

Uma expressão a ser representada no gráfico pode ser dada também na forma discreta, ou paramétrica. Nomeadamente, por meio de uma lista a começar pela palavra “discrete” ou “parametric”. A palavra chave discrete deverá ir seguida por duas listas, ambas do mesmo comprimento, que serão as coordenadas horizontais e verticais de um conjunto de pontos; em alternativa, as coordenadas de cada ponto podem ser colocadas numa lista de dois valores, e todas essas coordenadas deverão estar dentro de outra lista. A palavra chave parametric deverá ir seguida por duas expressões expr_x e expr_y, e um intervalo intervalo_t da forma [param, min, max]. As duas expressões deverão depender unicamente no parâmetro param, e o gráfico mostrará o percurso seguido pelo ponto com coordenadas (expr_x, expr_y) à medida que param aumenta desde min até max.

O intervalo de valores no eixo vertical não é obrigatório. É mais uma das opções do comando, com a sintaxe: [y, min, max]. Se essa opção for usada, o gráfico apresentará esse intervalo completo, inclusivamente quando as expressões não cheguem a atingir esses valores. De outra forma, se não for indicado um intervalo no eixo vertical por meio de set_plot_option, as fronteiras do eixo vertical serão seleccionadas automaticamente.

Todas as outras opções deverão ser listas, a começar pelo nome da opção. A opção xlabel pode ser usada para dar um texto que identificará o eixo horizontal; se essa opção não for usada, o eixo será identificado com o nome da variável indicada em intervalo_x, ou com a expressão expr_x, se houver unicamente uma expressão paramétrica, ou caso contrário ficará em branco.

O texto para identificar o eixo vertical pode ser indicado com a opção ylabel. Se só houver uma única expressão a ser representada, e a opção ylabel não tiver sido usada, o eixo vertical será identificado com essa expressão, a menos que for muito comprido, ou com a expressão expr_y, se a expressão for paramétrica, ou com o texto “discrete data” se a expressão for discreta.

As opções logx e logy não precisam de quaisquer paraâmetros. Fazem com que os eixos horizontal e vertical sejam apresentados em forma logarítmica.

Se houver vá rias expressões a serem representadas, será escrita uma legenda para identificar cada uma dessas expressões. O texto que deverá ser usado nessa legenda pode ser indicado por meio da opção legend. Se essa opção não for usada, Maxima criará textos para identificar cada expressão.

Por omissão, as expressões dadas serão representadas por pequenos segmentos de recta a ligarem pontos adjacentes num conjunto de pontos que, ou é dado usando a forma discrete, ou é calculado automaticamente a partir das expressões dadas, por meio de um algoritmo com ajuste automático dos intervalos entre pontos, usando como estimativa inicial do número de pontos o valor indicado pela opção nticks. A opção style serve para fazer com que alguma das expressões seja representada por pontos isolados ou por pontos mais segmentos de recta.

Existem várias opções globais, armazenadas na lista plot_options, quu podem ser modificadas usando a função set_plot_option; qualquer uma dessad opções pode ser contrariada pelos valores locais dados no comando plot2d.

Uma função a ser representada poderá ser identificada pelo nome de uma função ou operador do Maxima ou do Lisp, por meio duma expressão lambda do Maxima, ou como uma expressão geral do Maxima. Se for especificada como um nome ou como expressão lambda, a respectiva função deverá depender dum único argumento.

Exemplos:

Gráfico de uma função explícita.

(%i1) plot2d (sin(x), [x, -%pi, %pi])$
Gráfico de uma função explícita

Se a função aumenta rapidamente, é útil limitar os valores no eixo vertical:

(%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
plot2d: some values were clipped.
Exemplo do uso da opção gráfica y

Gráfico com escala logarítmica:

(%i1) plot2d (exp(3*s), [s, -2, 2], [logy])$
Gráfico com escala logarítmica

Várias formas de indicar as funções a serem traçadas no gráfico:

(%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, G, H], [u, -1, 1], [y, -1.5, 1.5])$
Várias formas de indicar as funções a serem traçadas no gráfico

Exemplo de função paramétrica. Curva da borboleta:

(%i1) r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5)$
(%i2) plot2d([parametric, r*sin(t), r*cos(t), 
             [t, -8*%pi, 8*%pi]])$
Gráfico de uma função paramétrica

Gráfico de uma circunferência de raio 1, com centro na origem, junto com a função y=-|x|. Para que a circunferência não pareça uma elipse, usa-se a opção same_xy para que a escala seja a mesma nos dois eixos. Mostra-se também o uso da opção nolegend para eliminar a legenda que identifica as duas funções.

(%i1) plot2d([x^2+y^2=1, -abs(x)], [x, -1.5, 1.5], [y, -2, 2], same_xy,
             nolegend);
Gráfico de uma circunferência usando a mesma escala nos dois eixos

Pontos discretos, indicando as coordenadas x e y por separado:

(%i1) plot2d ([discrete, makelist(i*%pi, i, 1, 5),
                            [0.6, 0.9, 0.2, 1.3, 1]])$
Gráfico de unm conjunto de pontos

Gráfico de 200 pontos aleatórios entre 0 e 9:

(%i1) plot2d ([discrete, makelist ( random(10), 200)])$
Gráfico de 200 pontos aleatórios

Neste exemplo, guarda-se uma tabela de três colunas no ficheiro data.txt, que é logo lido para representar as duas últimas colunas num gráfico:

(%i1) display2d:false$
(%i2) with_stdout ("data.txt", for x:0 thru 10 do
                             print (x, x^2, x^3))$
(%i3) data: read_matrix ("data.txt")$
(%i4) plot2d ([discrete, transpose(data)[2], transpose(data)[3]],
  [style,points], [point_type,diamond], [color,red])$
Gráfico de pontos lidos de um ficheiro

Um gráfico de dados experimentais junto com o seu modelo teórico:

(%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
(%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)"])$
Exemplo do uso de várias opções gráficas
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 uma ou mais superfícies definidas como funções de duas variáveis, ou de forma paramétrica.

As funções a serem representadas podem ser definidas por expressões ou por nomes de funções. Pode usar-se o rato para rodar o gráfico, podendo observar as superfícies desde diferente ângulos.

Exemplos:

Gráfico de uma função de duas variáveis:

(%i1) plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
        nomesh_lines)$
Gráfico de uma função de duas variáveis

Uso da opção z para limitar um função que se aproxima de infinito (neste caso, a função aproxima-se de mais ou menos infinito nos eixos x e y):

(%i1) plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
         nopalette, [color, magenta])$
Exemplo do uso da opção z de plot3d

Os valores infinitos de z podem também ser evitados usando uma gralha que não coincida com os pontos onde a função fica infinita. Este exemplo mostra também como modificar a paleta de cores e como incluir uma barra lateral que mostra a correspondência entre cores e valores de z:

(%i1) plot3d (log (x^2*y^2), [x, -2, 2], [y, -2, 2],[grid, 29, 29],
       [palette, [gradient, red, orange, yellow, green]],
       color_bar, [xtics, 1], [ytics, 1], [ztics, 4],
       [color_bar_tics, 4])$
Exemplo do uso da opção grid de plot3d

Duas superfícies num mesmo gráfico. Se os domínios das duas superfícies forem diferentes, as duas funções deverão ser colocadas em listas separadas, cada uma com o seu próprio domínio. O domínio por fora dessas listas define o domínio para todo o gráfico.

(%i1) plot3d ([[-3*x - y, [x, -2, 2], [y, -2, 2]],
   4*sin(3*(x^2 + y^2))/(x^2 + y^2), [x, -3, 3], [y, -3, 3]],
   [x, -4, 4], [y, -4, 4])$
Gráfico de duas funções de duas variáveis

A garrafa de Klein, definida parametricamente:

(%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))$
(%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
        [y, -%pi, %pi], [grid, 50, 50])$
Gráfico da garrafa de Klein

Gráfico dum harmônico esférico, utilizando a transformação predefinida spherical_to_xyz:

(%i1) plot3d (sin(2*theta)*cos(phi), [theta,0,%pi], [phi,0,2*%pi],
      [transform_xy, spherical_to_xyz], [grid, 30, 60], nolegend)$
Gráfico de un harmônico esférico

Uso da transformação predefinida polar_to_xy para transformar coordenadas cilíndricas para retangulares. Este exemplo mostra também como eliminar os eixos e a legenda:

(%i1) plot3d (r^.33*cos(th/3), [r,0,1], [th,0,6*%pi], nobox,
    nolegend, [grid, 12, 80], [transform_xy, polar_to_xy])$
Exemplo do uso da opção polar_to_xy de plot3d

Desenho de uma esfera utilizando a transformação de coordenadas esféricas para retangulares. A opção same_xyz é usada para que a escala dos três eixos seja a mesma, evitando que a esfera apareça como elipsoide. Quando sejam usadas transformações, não convém eliminar as linhas sobre a superfície, para evitar erros de Gnuplot.

(%i1) plot3d ( 5, [theta,0,%pi], [phi,0,2*%pi], same_xyz, nolegend,
  [transform_xy, spherical_to_xyz], [mesh_lines_color,blue],
  [palette,[gradient,"#1b1b4e", "#8c8cf8"]])$
Exemplo do uso da opção xpherical_to_xyz de plot3d

Definição de uma função de duas variáveis usando os valores de uma matriz. Note-se o uso do apóstrofe na definição da função para evitar que plot3d falhe ao detetar que os índices da matriz devem ser enteros:

(%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)])$
(%i3) plot3d (f(x,y), [x,1,4], [y,1,4], [grid,3,3], nolegend)$
Representação gráfica em 3D dos valores de uma matriz

Atribuindo o valor zero à opção elevation, uma superfície pode ser visualizada como um mapa em que diferentes cores representam diferentes valores.

(%i1) plot3d (cos (-x^2 + y^3/4), [x,-4,4], [y,-4,4], [zlabel,""],
       [mesh_lines_color,false], [elevation,0], [azimuth,0],
       color_bar, [grid,80,80], noztics, [color_bar_tics,1])$
Representação gráfica en 2D de uma superfície

Veja também plot_options, que descreve as opções das funções gráficas e mostra mais exemplos.

Variável de sistema: plot_options

Os elementos desta lista estabelecem os valores por omissaão para as opções usadas na elaboração de gráficos. Se uma opção estiver presente numa chamada a plot2d ou plot3d, esse valor terá precedência sobre o valor por omissção. De outra forma, será usado o valor em plot_options. Os valores por omissção das opções podem ser modificados usando 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 itens.

As opções globais que são reconhecidas por plot2d e plot3d são as seguintes:

Opções do Gnuplot:

Existem muitas opções específicas para o Gnuplot. Muitas dessas opções são comandos próprios do Gnuplot, especificados como sequências de caracteres. Consulte a documentação do gnuplot para mais pormenores.

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

Produz uma função adequada para a função transformação em plot3d. Usa-se conjuntamente com a opção gráfica 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 valores às opções globais para impressão. opção é especificada como uma lista de dois ou mais elementos, na qual o primeiro elemeto é uma das palavras chave dentro da lista plot_options.

O argumento dado a set_plot_option é avaliado e set_plot_option retorna a lista completa plot_options (após modificar um desses elementos).

Veja também plot_options, plot2d e plot3d.

Exemplos:

Modifica a gralha (grid) e o intervalo de x. Quando uma palavra chave em plot_options tiver um valor atribuído, colocar um apóstrofo evita que seja avaliado.

(%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]]

Previous: , Up: Criação de Gráficos   [Contents][Index]