Siguiente: , Anterior: , Subir: Gráficos   [Índice general][Índice]

12.3 Funciones y variables para gráficos

Función: contour_plot (expr, x_range, y_range, options, …)

Dibuja las curvas de nivel de expr en el rectángulo x_range por y_range. Cualesquiera otros argumentos adicionales se tratan como en plot3d.

contour_plot sólo trabaja con los métodos gnuplot o gnuplot_pipes.

Véase también implicit_plot.

Ejemplos:

(%i1) contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4])$
./figures/plotting1

Se pueden añadir cualesquiera opciones que acepte plot3d; por ejemplo, la opción legend con un valor false, para eliminar la leyenda. Gnuplot muestra por defecto tres líneas de contorno, pero para aumentar el número de niveles es necesario añadir algún código nativo de Gnuplot:

(%i1) contour_plot (u^3 + v^2, [u, -4, 4], [v, -4, 4],
              [legend,false],
              [gnuplot_preamble, "set cntrparam levels 12"])$
./figures/plotting2
Función: get_plot_option (keyword, index)

Devuelve el valor actual de la opción keyword almacenada en la variable global plot_options. Si index toma el valor 1, devuelve el propio valor de keyword; si vale 2 le añade el primer parámetro, y así sucesivamente.

Véanse también plot_options, set_plot_option y la sección Opciones gráficas.

Función: make_transform ([var1, var2, var3], fx, fy, fz)

Devuelve una función que se puede utilizar con la opción transform_xy de plot3d. Las tres variables ficticias var1, var2 y var3 representan las tres variables de la función plot3d, las dos primeras independientes y la tercera dependiente. Las tres funciones fx, fy y fz deben depender solo de las tres variables anteriores y retornar las correspondientes x, y, z que se deben dibujar. Hay dos transformaciones predefinidas: polar_to_xy y spherical_to_xyz.

Véanse polar_to_xy y spherical_to_xyz.

Símbolo del sistema: polar_to_xy

Cuando a la opción transform_xy de plot3d se le pasa el valor polar_to_xy, se interpretarán las dos primeras variables independientes como polares, transformándolas luego a coordenadas cartesianas.

Función: plot2d (plot, x_range, …, options, …)
Función: plot2d ([plot_1, …, plot_n], …, options, …)
Función: plot2d ([plot_1, …, plot_n], x_range, …, options, …)

Donde plot, plot_1, …, plot_n pueden ser expresiones, nombres de funciones o una lista de cualquiera de las siguientes formas: [discrete, [x1, ..., xn], [y1, ..., yn]], [discrete, [[x1, y1], ..., [xn, ..., yn]] o [parametric, x_expr, y_expr, t_range].

Muestra un gráfico de una o más expresiones como función de una variable.

La función plot2d representa uno o más gráficos en dos dimensiones. Las expresiones o nombres de funciones que se utilicen para definir curvas deben depender todas ellas de una única variable var, siendo obligatorio utilizar x_range para nombrar la variable y darle sus valores mínimo y máximo usando la siguiente sintaxis: [variable, min, max].

Un gráfico también se puede definir de forma discreta o paramétrica. La forma discreta se utiliza para dibujar un conjunto de puntos de coordenadas dadas. Un gráfico discreto se define como una lista que empiezan con la palabra clave discrete seguida de una o dos listas de valores numéricos. Cuando haya dos listas, ambas deben ser de igual longitud, la primera se interpreta como la de abscisas y la segunda de ordenadas. Cuando haya una lista siguiendo la clave discrete, cada uno de sus elementos debe ser a su vez una lista de solo dos valores, correspondientes a las coordenadas x e y.

Un gráfico paramétrico se define como una lista que empieza con la palabra clave parametric, seguida de dos expresiones o nombres de funciones y un rango paramétrico. El rango paramétrico debe ser una lista formada con el nombre del parámetro seguido de sus valores mínimo y máximo: [param, min, max]. El gráfico se formará con los puntos cuyas coordenadas devuelvan las dos expresiones o funciones, según param aumente desde min hasta max.

La especificación del rango para el eje vertical es opcional y toma la forma [y, min, max] (y se utiliza siempre para el eje vertical). En caso de utilizar esta opción, el gráfico mostrará exactamente ese rango vertical, independientemente de los valores alcanzados por los elementos gráficos. Si no se especifica el rango vertical, se ajustará a los valores extremos alcanzados por las ordenadas de los puntos que aparezcan en el gráfico.

Cualesquiera otras opciones deben ser listas, comenzando con el nombre de la opción seguido de uno o más valores. Véase plot_options.

Si hay varias expresiones para ser dibujadas, se mostrará una leyenda que identifique a cada una de ellas. Las etiquetas a utilizar pueden especificarse con la opción legend. Si no se utiliza esta opción, Maxima creará etiquetas a partir de las expresiones o nombres de funciones.

Ejemplos:

Dibujando la función sinusoidal:

(%i1) plot2d (sin(x), [x, -%pi, %pi])$
./figures/plotting2

Si la función crece rápidamente puede ser necesario limitar los valores del eje vertical:

(%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
plot2d: some values were clipped.
./figures/plotting3

El aspecto del gráfico puede ser diferente dependiendo del programa gráfico utilizado. Por ejemplo, cuando se desactiva el marco, Xmaxima dibuja los ejes como flechas:

(%i1) plot2d ( x^2-1, [x, -3, 3], [y, -2, 10],
                      [box, false], [plot_format, xmaxima])$
./figures/plotting1

Gráfico con escala logarítmica:

(%i1) plot2d (exp(3*s), [s, -2, 2], [logy])$
./figures/plotting4

Dibujando funciones especificadas por su nombre:

(%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])$
./figures/plotting5

Ejemplo de función paramétrica. Curva de la mariposa:

(%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], [nticks, 2000]])$
./figures/plotting6

Una circunferencia de dos vueltas y solo siete puntos:

(%i1) plot2d ([parametric, cos(t), sin(t),
              [t, -2*%pi, 2*%pi], [nticks, 8]])$
./figures/plotting7

Dibujo de una función junto con la representación paramétrica de una circunferencia. El tamaño del gráfico se ha ajustado con las opciones x e y para que la circunferencia no se vea como una elipse. Estos valores son aceptables para el terminal Postscript utilizado para producir este gráfico, y puede seer necesario adaptar los valores para otros terminales:

(%i1) plot2d([[parametric, cos(t), sin(t),
              [t,0,2*%pi], [nticks, 80]],
        abs(x)], [x,-2,2], [y, -1.5, 1.5])$
plot2d: some values were clipped.
./figures/plotting8

Puntos discretos definiendo separadamente las coordenadas x e y:

(%i1) plot2d ([discrete, [10, 20, 30, 40, 50],
                         [.6, .9, 1.1, 1.3, 1.4]])$
./figures/plotting9

Los mismos puntos del ejemplo anterior, pero definiendo una a una las coordenadas y sin segmentos que unan los puntos:

(%i1) plot2d([discrete, [[10, .6], [20, .9], [30, 1.1],
                         [40, 1.3], [50, 1.4]]],
                        [style, points])$
./figures/plotting10

En este ejemplo, se guarda una tabla de tres columnas en el archivo data.txt, que luego será leído para representar las dos últimas columnas:

(%i1) with_stdout ("data.txt", for x:0 thru 10 do 
                                   print (x, x^2, x^3))$
(%i2) data: read_matrix ("data.txt")$
(%i3) plot2d ([discrete, transpose(data)[2], transpose(data)[3]],
  [style,points], [point_type,diamond], [color,red])$
./figures/plotting11

Un gráfico de datos empíricos junto con su 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)"])$
./figures/plotting12
Función: plot3d (expr, x_range, y_range, …, options, …)
Función: plot3d ([expr_1, …, expr_n], x_range, y_range, …, options, …)

Dibuja una o más superficies definidas como funciones de dos variables o en forma paramétrica

Las funciones a dibujar se pueden especificar como expresiones o nombres de funciones. Puede utilizarse el ratón para hacer girar el gráfico y observarlo desde distintos ángulos.

Ejemplos:

Representación de una función:

(%i1) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2])$
./figures/plotting13

Uso de la opción z para acotar una función que tiende a infinito (en este caso, la función tiende a menos infinito en los ejes x e y):

(%i1) plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
               [palette, false], [color, magenta, blue])$
./figures/plotting14

Los valores infinitos de z se pueden obviar eligiendo una retícula que no coincida con las asíntotas; este ejemplo también muestra cómo seleccionar las paletas predefinidas, en este caso la número 4:

(%i1) plot3d (log (x^2*y^2), [x, -2, 2], [y, -2, 2], 
         [grid, 29, 29],
         [palette, get_plot_option(palette,5)])$
./figures/plotting15

Dos superficies en el mismo gráfico, compartiendo el mismo dominio; en Gnuplot, ambas superfifies comparten la misma paleta:

(%i1) plot3d ([2^(-x^2 + y^2), 4*sin(3*(x^2+y^2))/(x^2+y^2),
              [x, -3, 3], [y, -2, 2]])$
./figures/plotting16

Las mismas superficies, pero con diferentes dominios; en Xmaxima cada superficies usa una paleta diferente, elegida de la lista definida por la opción palette:

(%i1) plot3d ([[2^(-x^2 + y^2),[x,-2,2],[y,-2,2]],
         4*sin(3*(x^2+y^2))/(x^2+y^2),
         [x, -3, 3], [y, -2, 2]], [plot_format,xmaxima])$
./figures/plotting17

La botella de Klein, definida paramétricamente:

(%i1) expr_1:5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0)-10.0$
(%i2) expr_2:-5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0)$
(%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, 40, 40])$
./figures/plotting18

Gráfico de un armónico esférico, utilizando las transformaciones predefinidas 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])$
./figures/plotting19

Uso de la transformación predefinida polar_to_xy. Este ejemplo también muestra cómo eliminar el marco y la leyenda:

(%i1) plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
         [grid, 12, 80],
         [transform_xy, polar_to_xy], [box, false],
         [legend,false])$
./figures/plotting20

Dibujo de una esfera utilizando la transformación esférica. En Xmaxima, los tres ejes utilizan escalas proporcionales, manteniendo la forma simétrica de la esfera. Se utiliza una paleta con color degradado:

(%i1) plot3d ( 5, [theta, 0, %pi], [phi, 0, 2*%pi],
         [plot_format,xmaxima],
         [transform_xy, spherical_to_xyz],
         [palette,[value,0.65,0.7,0.1,0.9]])$
./figures/plotting21

Definición de una función con dos variables utilizando una matriz. Nótese la comilla simple en la definición de la función para prevenir que plot3d falle al detectar que la matriz necesita índices 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, 4, 4])$
apply: subscript must be an integer; found: round(x)
./figures/plotting22

Asignando a la opción elevation el valor cero, una superficie puede verse como una aplicación en la que cada color representa un nivel diferente. La opción colorbox se utiliza para mostrar la correspondencia entre colores y niveles; las líneas de la retícula se desactivan para facilitar la visualización de los colores:

(%i1) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
        [mesh_lines_color, false], [elevation, 0], [azimuth, 0],
        [colorbox, true], [grid, 150, 150])$
./figures/plotting23

Véase también la sección Opciones gráficas.

Variable global: plot_options

Los elementos de esta lista establecen las opciones por defecto para los gráficos. Si una opción está presente en una llamada a plot2d o a plot3d, este valor adquiere prevalencia sobre las opciones por defecto. En otro caso se utilizará el valor que tenga en plot_options. Las opciones por defecto se asignan mediante la función set_plot_option.

Cada elemento de plot_options es una lista de dos o más elementos, el primero de los cuales es el nombre de la opción, siendo los siguientes los valores que toma. En algunos casos el valor asignado es a su vez una lista, que puede contener varios elementos.

Véanse también set_plot_option, get_option y la sección Opciones gráficas.

Función: set_plot_option (option)

Acepta la mayor parte de opciones listadas en la sección Opciones gráficas y las almacena en la variable global plot_options.

La función set_plot_option evalúa su argumento y devuelve la lista completa plot_options tal como queda después de la actualización.

Véanse también plot_options, get_option y la sección Opciones gráficas.

Ejemplos:

Modificación de los valores para grid.

(%i1) set_plot_option ([grid, 30, 40]);
(%o1) [[t, - 3, 3], [grid, 30, 40], [transform_xy, false], 
[run_viewer, true], [axes, true], [plot_format, gnuplot_pipes], 
[color, blue, red, green, magenta, black, cyan], 
[point_type, bullet, circle, plus, times, asterisk, box, square, 
triangle, delta, wedge, nabla, diamond, lozenge], 
[palette, [hue, 0.25, 0.7, 0.8, 0.5], 
[hue, 0.65, 0.8, 0.9, 0.55], [hue, 0.55, 0.8, 0.9, 0.4], 
[hue, 0.95, 0.7, 0.8, 0.5]], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 29], [adapt_depth, 5], 
[gnuplot_preamble, ], [gnuplot_default_term_command, 
set term pop], [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], [plot_realpart, false]]
Símbolo del sistema: spherical_to_xyz

Cuando a la opción transform_xy de plot3d se le pasa el valor spherical_to_xyz, se interpretarán las variables independientes como esféricas, transformándolas luego a coordenadas cartesianas.


Siguiente: , Anterior: , Subir: Gráficos   [Índice general][Índice]