Funciones y variables para gráficos (Manual de Maxima 5.44.0)

Siguiente: Opciones gráficas, Anterior: Formatos gráficos, 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])$

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

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

  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.

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

  Gráfico con escala logarítmica:

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

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

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

  Una circunferencia de dos vueltas y solo siete puntos:

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

  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.

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

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

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

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

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

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

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

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

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

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

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

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

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

  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)

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

  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: Opciones gráficas, Anterior: Formatos gráficos, Subir: Gráficos [Índice general][Índice]