1 @c English version 2016-01-26
3 * Introducción a draw::
4 * Funciones y variables para draw::
5 * Funciones y variables para picture::
6 * Funciones y variables para worldmap::
13 @node Introducción a draw, Funciones y variables para draw, draw, draw
14 @section Introducción a draw
17 @code{draw} es un interfaz para comunicar Maxima con Gnuplot.
19 Tres son las funciones principales a utilizar a nivel de Maxima:
20 @code{draw2d}, @code{draw3d} y @code{draw}.
22 Síganse estos enlaces para ver ejemplos más elaborados
25 @url{http://riotorto.users.sourceforge.net/Maxima/gnuplot/}
29 @url{http://riotorto.users.sourceforge.net/Maxima/vtk/}
31 Se necesita tener instalado Gnuplot 4.2 o superior para ejecutar este paquete.
37 @node Funciones y variables para draw, Funciones y variables para picture, Introducción a draw, draw
38 @section Funciones y variables para draw
46 @deffn {Constructor de escena} gr2d (@var{Opción gráfica}, ..., @var{graphic_object}, ...)
48 La función @code{gr2d} construye un objeto que describe una escena 2d. Los
49 argumentos son @i{opciones gráficas} y @i{objetos gráficos}
50 o listas que contengan elementos de ambos tipos. Esta escena
51 se interpreta secuencialmente: las @i{opciones gráficas} afectan a aquellos
52 @i{objetos gráficos} colocados a su derecha. Algunas @i{opciones gráficas}
53 afectan al aspecto global de la escena.
55 La lista de @i{objetos gráficos} disponibles para escenas en dos
56 dimensiones: @code{bars}, @code{ellipse}, @code{explicit}, @code{image},
57 @code{implicit}, @code{label}, @code{parametric}, @code{points}, @code{polar},
58 @code{polygon}, @code{quadrilateral}, @code{rectangle}, @code{triangle},
59 @code{vector} y @code{geomap} (este último definido en el paquete @code{worldmap}).
61 Véanse también @code{draw} y @code{draw2d}.
63 Para utilizar este objecto, ejecútese primero @code{load("draw")}.
67 @deffn {Constructor de escena} gr3d (@var{Opción gráfica}, ..., @var{graphic_object}, ...)
69 La función @code{gr3d} construye un objeto que describe una escena 3d. Los
70 argumentos son @i{opciones gráficas} y @i{objetos gráficos}
71 o listas que contengan elementos de ambos tipos. Esta escena
72 se interpreta secuencialmente: las @i{opciones gráficas} afectan a aquellos
73 @i{objetos gráficos} colocados a su derecha. Algunas @i{opciones gráficas}
74 afectan al aspecto global de la escena.
76 La lista de @i{objetos gráficos} disponibles para escenas en tres
77 dimensiones: @code{cylindrical}, @code{elevation_grid}, @code{explicit},
78 @code{implicit}, @code{label}, @code{mesh}, @code{parametric},
79 @code{parametric_surface}, @code{points}, @code{quadrilateral},
80 @code{spherical}, @code{triangle}, @code{tube}, @code{vector}
81 y @code{geomap} (este último definido en el paquete @code{worldmap}).
83 Véanse también @code{draw} y @code{draw3d}.
85 Para utilizar este objeto, ejecútese primero @code{load("draw")}.
97 @deffn {Función} draw (@var{gr2d}, ..., @var{gr3d}, ..., @var{options}, ...)
99 Representa gráficamente una serie de escenas; sus argumentos son objetos
100 @code{gr2d} y/o @code{gr3d}, junto con algunas opciones, o listas de escenas y opciones.
101 Por defecto, las escenas se representan en una columna.
103 La función @code{draw} acepta las siguientes opciones globales: @code{terminal},
104 @code{columns}, @code{dimensions}, @code{file_name} y @code{delay}.
106 Las funciones @code{draw2d} y @code{draw3d} son atajos a utilizar
107 cuando se quiere representar una única escena en dos o tres
108 dimensiones, respectivamente.
110 Véanse también @code{gr2d} y @code{gr3d}.
112 Para utilizar esta función, ejecútese primero @code{load("draw")}.
118 (%i2) scene1: gr2d(title="Ellipse",
120 parametric(2*cos(t),5*sin(t),t,0,2*%pi))$
121 (%i3) scene2: gr2d(title="Triangle",
122 polygon([4,5,7],[6,4,2]))$
123 (%i4) draw(scene1, scene2, columns = 2)$
126 Las dos sentencias gráficas siguientes son equivalentes:
129 (%i2) draw(gr3d(explicit(x^2+y^2,x,-1,1,y,-1,1)));
130 (%o2) [gr3d(explicit)]
131 (%i3) draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1));
132 (%o3) [gr3d(explicit)]
135 Un fichero gif animado:
141 terminal = 'animated_gif,
142 gr2d(explicit(x^2,x,-1,1)),
143 gr2d(explicit(x^3,x,-1,1)),
144 gr2d(explicit(x^4,x,-1,1)));
145 End of animation sequence
146 (%o2) [gr2d(explicit), gr2d(explicit), gr2d(explicit)]
149 Véanse también @code{gr2d}, @code{gr3d}, @code{draw2d} y @code{draw3d}.
155 @deffn {Función} draw2d (@var{option}, @var{graphic_object}, ...)
157 Esta función es un atajo para
158 @code{draw(gr2d(@var{options}, ..., @var{graphic_object}, ...))}.
160 Puede utilizarse para representar una única escena en 2d.
162 Para utilizar esta función, ejecútese primero @code{load("draw")}.
164 Véanse también @code{draw} y @code{gr2d}.
168 @deffn {Función} draw3d (@var{option}, @var{graphic_object}, ...)
170 Esta función es un atajo para
171 @code{draw(gr3d(@var{options}, ..., @var{graphic_object}, ...))}.
173 Puede utilizarse para representar una única escena en 3d.
175 Para utilizar esta función, ejecútese primero @code{load("draw")}.
177 Véanse también @code{draw} y @code{gr3d}.
182 @deffn {Función} draw_file (@var{Opción gráfica}, ..., @var{Opción gráfica}, ...)
184 Almacena el gráfico actual en un fichero. Las opciones gráficas que
185 acepta son: @code{terminal}, @code{dimensions} y@code{file_name}.
191 (%i2) /* dibujo en pantalla */
192 draw(gr3d(explicit(x^2+y^2,x,-1,1,y,-1,1)))$
193 (%i3) /* same plot in eps format */
194 draw_file(terminal = eps,
195 dimensions = [5,5]) $
202 @deffn {Función} multiplot_mode (@var{term})
204 Esta función permite a Maxima trabajar en modo de gráficos múltiples en
205 una sola ventana del terminal @var{term}; argumentos válidos para esta función
206 son @code{screen}, @code{wxt}, @code{aquaterm} y @code{none}.
208 Cuando el modo de gráficos múltiples está activo, cada llamada a @code{draw}
209 envía un nuevo gr'afico a la misma ventana, sin borrar los anteriores.
210 Para desactivar el modo de gráficos múltiples escríbase
211 @code{multiplot_mode(none)}.
213 Cuando el modo de gráficos múltiples está activo, la opción global @code{terminal}
214 se bloquea; para desbloquearla y cambiar de terminal es necesario desactivar
215 previamente el modo de gráficos múltiples.
217 Este modo de trabajo no funciona en plataformas Windows.
223 (%i2) set_draw_defaults(
227 title = "Step by step plot" )$
228 (%i3) multiplot_mode(screen)$
229 (%i4) draw2d(color=blue, explicit(x^2,x,-1,1))$
230 (%i5) draw2d(color=red, explicit(x^3,x,-1,1))$
231 (%i6) draw2d(color=brown, explicit(x^4,x,-1,1))$
232 (%i7) multiplot_mode(none)$
239 @deffn {Función} set_draw_defaults (@var{Opción gráfica}, ..., @var{Opción gráfica}, ...)
241 Establece las opciones gráficas de usuario. Esta función es útil
242 para dibujar varios gráficos con las mismas opciones. Llamando
243 a la función sin argumentos se borran las opciones de usuario por defecto.
249 (%i2) set_draw_defaults(
254 (%i3) /* dibujo con opciones de usuario */
255 draw2d(explicit(((1+x)**2/(1+x*x))-1,x,-10,10))$
256 (%i4) set_draw_defaults()$
257 (%i5) /* dibujo con opciones por defecto */
258 draw2d(explicit(((1+x)**2/(1+x*x))-1,x,-10,10))$
261 Para utilizar esta función, ejecútese primero @code{load("draw")}.
268 @subsection Opciones gráficas
274 @defvr {Opción gráfica} adapt_depth
275 Valor por defecto: 10
277 @code{adapt_depth} es el número máximo de particiones utilizadas por
278 la rutina gráfica adaptativa.
280 Esta opción sólo es relevante para funciones de tipo @code{explicit} en 2d.
284 @defvr {Opción gráfica} allocation
285 Valor por defecto: @code{false}
287 Con la opción @code{allocation} es posible colocar a voluntad una escena en la
288 ventana de salida, lo cual resulta de utilidad en el caso de gráficos
289 múltiples. Cuando la opción toma el valor @code{false}, la escena se coloca
290 de forma automática, dependiendo del valor asignado a la opción @code{columns}.
291 En cualquier otro caso, a @code{allocation} se le debe asignar una lista con dos
292 pares de números; el primero se corresponde con la posición de la esquina
293 inferior izquierda del gráfico y el segundo par hace referencia al ancho y alto
294 de la escena. Todas las cantidades deben darse en coordenadas relativas, entre
305 explicit(x^2,x,-1,1)),
307 allocation = [[1/4, 1/4],[1/2, 1/2]],
308 explicit(x^3,x,-1,1),
312 Multiplot con dimensiones establecidas por el usuario.
319 allocation = [[0, 0],[1, 1/4]],
320 explicit(x^2,x,-1,1)),
322 allocation = [[0, 1/4],[1, 3/4]],
323 explicit(x^2+y^2,x,-1,1,y,-1,1) ))$
326 Véase también la opción @code{columns}.
331 @defvr {Opción gráfica} axis_3d
332 Valor por defecto: @code{true}
334 Cuando @code{axis_3d} vale @code{true}, los ejes @var{x}, @var{y} y @var{z}
335 permanecen visibles en las escenas 3d.
337 Puesto que ésta es una opción global, su posición dentro de la
338 descripción de la escena no reviste importancia.
344 (%i2) draw3d(axis_3d = false,
345 explicit(sin(x^2+y^2),x,-2,2,y,-2,2) )$
348 Véanse también @code{axis_bottom}, @code{axis_left}, @code{axis_top} y @code{axis_right} for axis in 2d.
354 @defvr {Opción gráfica} axis_bottom
355 Valor por defecto: @code{true}
357 Cuando @code{axis_bottom} vale @code{true}, el eje inferior permanece visible en las escenas 2d.
359 Puesto que ésta es una opción global, su posición dentro de la
360 descripción de la escena no reviste importancia.
366 (%i2) draw2d(axis_bottom = false,
367 explicit(x^3,x,-1,1))$
370 Véanse también @code{axis_left}, @code{axis_top}, @code{axis_right} y @code{axis_3d}.
376 @defvr {Opción gráfica} axis_left
377 Valor por defecto: @code{true}
379 Cuando @code{axis_left} vale @code{true}, el eje izquierdo permanece visible en las escenas 2d.
381 Puesto que ésta es una opción global, su posición dentro de la
382 descripción de la escena no reviste importancia.
388 (%i2) draw2d(axis_left = false,
389 explicit(x^3,x,-1,1))$
392 Véanse también @code{axis_bottom}, @code{axis_top}, @code{axis_right} y @code{axis_3d}.
398 @defvr {Opción gráfica} axis_right
399 Valor por defecto: @code{true}
401 Cuando @code{axis_right} vale @code{true}, el eje derecho permanece visible en las escenas 2d.
403 Puesto que ésta es una opción global, su posición dentro de la
404 descripción de la escena no reviste importancia.
410 (%i2) draw2d(axis_right = false,
411 explicit(x^3,x,-1,1))$
414 Véanse también @code{axis_bottom}, @code{axis_left}, @code{axis_top} y @code{axis_3d}.
420 @defvr {Opción gráfica} axis_top
421 Valor por defecto: @code{true}
423 Cuando @code{axis_top} vale @code{true}, el eje superior permanece visible en las escenas 2d.
425 Puesto que ésta es una opción global, su posición dentro de la
426 descripción de la escena no reviste importancia.
432 (%i2) draw2d(axis_top = false,
433 explicit(x^3,x,-1,1))$
436 Véanse también @code{axis_bottom}, @code{axis_left}, @code{axis_right} y @code{axis_3d}.
442 @defvr {Opción gráfica} background_color
443 Valor por defecto: @code{white}
445 Establece el color de fondo en los terminales @code{gif}, @code{png}, @code{jpg}
446 y @code{gif}. El color de fondo por defecto es blanco.
448 Puesto que ésta es una opción global, su posición dentro de la
449 descripción de la escena no reviste importancia.
451 Esta opción no es compatible con los terminales @code{epslatex} y @code{epslatex_standalone}.
453 Véase también @code{color}.
459 @defvr {Opción gráfica} border
460 Valor por defecto: @code{true}
462 Cuando @code{border} vale @code{true}, los bordes de los
463 polígonos se dibujan de acuerdo con @code{line_type} y
466 Esta opción afecta a los siguientes objetos gráficos:
469 @code{gr2d}: @code{polygon}, @code{rectangle} y @code{ellipse}.
476 (%i2) draw2d(color = brown,
478 polygon([[3,2],[7,2],[5,5]]),
481 polygon([[5,2],[9,2],[7,5]]) )$
488 @defvr {Opción gráfica} capping
489 Valor por defecto: @code{[false, false]}
491 Una lista de dos elementos, @code{true} y @code{false},
492 indicando si los extremos de un objeto gráfico @code{tube}
493 permanece abiertos o si deben ser cerrados. Por defecto, ambos
494 extremos se dejan abiertos.
496 La asignación @code{capping = false} equivale a @code{capping = [false, false]}
497 y @code{capping = true} equivale a @code{capping = [true, true]}.
504 capping = [false, true],
513 @defvr {Opción gráfica} cbrange
514 Valor por defecto: @code{auto}
516 Cuando @code{cbrange} vale @code{auto}, el rango de los valores que se
517 colorean cuando @code{enhanced3d} es diferente de @code{false} se calcula
518 automáticamente. Valores fuera del rango utilizan el color del valor
521 Cuando @code{enhanced3d} o @code{colorbox} vale @code{false}, la
522 opción @code{cbrange} no tiene efecto alguno.
524 Si el usuario quiere especificar un intervalo para los valores a colorear,
525 éste debe expresarse como una lista de Maxima, como en @code{cbrange=[-2, 3]}.
527 Puesto que ésta es una opción global, su posición dentro de la
528 descripción de la escena no reviste importancia.
538 explicit(x^2+y^2, x,-2,2,y,-2,2)) $
541 Véanse también @code{enhanced3d} y @code{cbtics}.
546 @defvr {Opción gráfica} cbtics
547 Valor por defecto: @code{auto}
549 Esta opción gráfica controla la forma en la que se dibujarán
550 las marcas en la escala de color cuando la opción @code{enhanced3d}
551 sea diferente de @code{false}.
553 Cuando @code{enhanced3d} o @code{colorbox} vale @code{false}, la
554 opción @code{cbtics} no tiene efecto alguno.
556 Véase @code{xtics} para una descripción completa.
565 cbtics = @{["High",10],["Medium",05],["Low",0]@},
567 explicit(x^2+y^2, x,-2,2,y,-2,2)) $
570 See also @code{enhanced3d}, @code{colorbox} and @code{cbrange}.
575 @defvr {Opción gráfica} color
576 Valor por defecto: @code{blue}
578 @code{color} especifica el color para dibujar líneas,
579 puntos, bordes de polígonos y etiquetas.
581 Los colores se pueden dar a partir de sus nombres o en
582 código hexadecimal @i{rgb}.
584 Los nombres de colores disponibles son:
585 @code{white}, @code{black}, @code{gray0}, @code{grey0}, @code{gray10},
586 @code{grey10}, @code{gray20}, @code{grey20}, @code{gray30}, @code{grey30},
587 @code{gray40}, @code{grey40}, @code{gray50}, @code{grey50}, @code{gray60},
588 @code{grey60}, @code{gray70}, @code{grey70}, @code{gray80}, @code{grey80},
589 @code{gray90}, @code{grey90}, @code{gray100}, @code{grey100}, @code{gray},
590 @code{grey}, @code{light_gray}, @code{light_grey}, @code{dark_gray},
591 @code{dark_grey}, @code{red}, @code{light_red}, @code{dark_red}, @code{yellow},
592 @code{light_yellow}, @code{dark_yellow}, @code{green}, @code{light_green},
593 @code{dark_green}, @code{spring_green}, @code{forest_green}, @code{sea_green},
594 @code{blue}, @code{light_blue}, @code{dark_blue}, @code{midnight_blue},
595 @code{navy}, @code{medium_blue}, @code{royalblue}, @code{skyblue},
596 @code{cyan}, @code{light_cyan}, @code{dark_cyan}, @code{magenta},
597 @code{light_magenta}, @code{dark_magenta}, @code{turquoise},
598 @code{light_turquoise}, @code{dark_turquoise}, @code{pink}, @code{light_pink},
599 @code{dark_pink}, @code{coral}, @code{light_coral}, @code{orange_red},
600 @code{salmon}, @code{light_salmon}, @code{dark_salmon}, @code{aquamarine},
601 @code{khaki}, @code{dark_khaki}, @code{goldenrod}, @code{light_goldenrod},
602 @code{dark_goldenrod}, @code{gold}, @code{beige}, @code{brown}, @code{orange},
603 @code{dark_orange}, @code{violet}, @code{dark_violet}, @code{plum} y @code{purple}.
605 Las componentes cromáticas en código hexadecimal se introducen
606 en el formato @code{"#rrggbb"}.
612 (%i2) draw2d(explicit(x^2,x,-1,1), /* default is black */
614 explicit(0.5 + x^2,x,-1,1),
616 explicit(1 + x^2,x,-1,1),
618 explicit(1.5 + x^2,x,-1,1),
620 label(["This is a label",0,1.2]) )$
623 Véase también @code{fill_color}.
628 @defvr {Opción gráfica} colorbox
629 Valor por defecto: @code{true}
631 Cuando @code{colorbox} vale @code{true}, se dibuja una escala de colores sin
632 título al lado de los objetos @code{image} en 2D o de objetos
633 coloreados en 3D. Cuando @code{colorbox} vale @code{false}, no se presenta
634 la escala de colores. Cuando @code{colorbox} es una cadena de caracteres,
635 se mostrará la escala de colores con un título.
637 Puesto que ésta es una opción global, su posición dentro de la
638 descripción de la escena no reviste importancia.
642 Escala de colores e imágenes.
646 (%i2) im: apply('matrix,
647 makelist(makelist(random(200),i,1,30),i,1,30))$
648 (%i3) draw2d(image(im,0,0,30,30))$
649 (%i4) draw2d(colorbox = false, image(im,0,0,30,30))$
652 Escala de colores y objeto 3D coloreado.
657 colorbox = "Magnitude",
659 explicit(x^2+y^2,x,-1,1,y,-1,1))$
662 Véase también @code{palette}.
668 @defvr {Opción gráfica} columns
671 @code{columns} es el número de columnas en gráficos múltiples.
673 Puesto que ésta es una opción global, su posición dentro de la
674 descripción de la escena no reviste importancia. También puede
675 usarse como argumento de la función @code{draw}.
681 (%i2) scene1: gr2d(title="Ellipse",
683 parametric(2*cos(t),5*sin(t),t,0,2*%pi))$
684 (%i3) scene2: gr2d(title="Triangle",
685 polygon([4,5,7],[6,4,2]))$
686 (%i4) draw(scene1, scene2, columns = 2)$
693 @defvr {Opción gráfica} contour
694 Valor por defecto: @code{none}
696 La opción @code{contour} permite al usuario decidir dónde colocar
698 Valores posibles son:
704 no se dibujan líneas de nivel.
708 las líneas de nivel se proyectan sobre el plano xy.
712 las líneas de nivel se dibujan sobre la propia superficie.
716 se dibujan dos conjuntos de líneas de nivel: sobre
717 la superficie y las que se proyectan sobre el plano xy.
721 las líneas de nivel se proyectan sobre el plano xy
722 y el punto de vista del observador se coloca perpendicularmente a él.
726 Puesto que ésta es una opción global, su posición dentro de la
727 descripción de la escena no reviste importancia.
733 (%i2) draw3d(explicit(20*exp(-x^2-y^2)-10,x,0,2,y,-3,3),
736 surface_hide = true) $
739 Véase también @code{contour_levels}.
744 @defvr {Opción gráfica} contour_levels
747 Esta opción gráfica controla cómo se dibujarán las líneas
748 de nivel. A @code{contour_levels} se le puede asignar un número entero
749 positivo, una lista de tres números o un conjunto numérico arbitrario:
753 Si a @code{contour_levels} se le asigna un entero positivo @var{n},
754 entonces se dibujarán @var{n} líneas de nivel a intervalos
755 iguales. Por defecto, se dibujaán cinco isolíneas.
758 Si a @code{contour_levels} se le asigna una lista de tres números de la
759 forma @code{[inf,p,sup]}, las isolíneas se dibujarán
760 desde @code{inf} hasta @code{sup} en pasos de amplitud @code{p}.
763 Si a @code{contour_levels} se le asigna un conjunto de números de la
764 forma @code{@{n1, n2, ...@}}, entonces se dibujarán las
765 isolíneas correspondientes a los niveles @code{n1},
769 Puesto que ésta es una opción global, su posición dentro de la
770 descripción de la escena no reviste importancia.
774 Diez isolíneas igualmente espaciadas. El número
775 real puede ajustarse a fin de poder conseguir etiquetas más
779 (%i2) draw3d(color = green,
780 explicit(20*exp(-x^2-y^2)-10,x,0,2,y,-3,3),
783 surface_hide = true) $
787 Desde -8 hasta 8 en pasos de amplitud 4.
790 (%i2) draw3d(color = green,
791 explicit(20*exp(-x^2-y^2)-10,x,0,2,y,-3,3),
792 contour_levels = [-8,4,8],
794 surface_hide = true) $
797 Líneas correspondientes a los niveles -7, -6, 0.8 y 5.
800 (%i2) draw3d(color = green,
801 explicit(20*exp(-x^2-y^2)-10,x,0,2,y,-3,3),
802 contour_levels = @{-7, -6, 0.8, 5@},
804 surface_hide = true) $
807 Véase también @code{contour}.
813 @defvr {Opción gráfica} data_file_name
814 Valor por defecto: @code{"data.gnuplot"}
816 @code{data_file_name} es el nombre del fichero que almacena
817 la información numérica que necesita Gnuplot para crear
818 el gráfico solicitado.
820 Puesto que ésta es una opción global, su posición dentro de la
821 descripción de la escena no reviste importancia. También puede
822 usarse como argumento de la función @code{draw}.
824 Véase ejemplo en @code{gnuplot_file_name}.
830 @defvr {Opción gráfica} delay
833 Este es el retraso en centésimas de segundo entre imágenes
834 en los ficheros gif animados.
836 Puesto que ésta es una opción global, su posición dentro de la
837 descripción de la escena no reviste importancia. También puede
838 usarse como argumento de la función @code{draw}.
847 terminal = 'animated_gif,
848 gr2d(explicit(x^2,x,-1,1)),
849 gr2d(explicit(x^3,x,-1,1)),
850 gr2d(explicit(x^4,x,-1,1)));
851 End of animation sequence
852 (%o2) [gr2d(explicit), gr2d(explicit), gr2d(explicit)]
855 La opciób @code{delay} sólo se activa en caso de gifs animados; se ignora en
858 Véanse también @code{terminal}, @code{dimensions}.
863 @defvr {Opción gráfica} dimensions
864 Valor por defecto: @code{[600,500]}
866 Dimensiones del terminal de salida. Su valor es una lista formada
867 por el ancho y el alto. El significado de estos dos números
868 depende del terminal con el que se esté trabajando.
870 Con los terminales @code{gif}, @code{animated_gif}, @code{png}, @code{jpg},
871 @code{svg}, @code{screen}, @code{wxt} y @code{aquaterm}, los enteros
872 representan números de puntos en cada dirección. Si no son enteros
875 Con los terminales @code{eps}, @code{eps_color}, @code{pdf} y
876 @code{pdfcairo}, los números representan centésimas de cm,
877 lo que significa que, por defecto, las imágenes en estos
878 formatos tienen 6 cm de ancho por 5 cm de alto.
880 Puesto que ésta es una opción global, su posición dentro de la
881 descripción de la escena no reviste importancia. También puede
882 usarse como argumento de la función @code{draw}.
886 La opción @code{dimensions} aplicada a un fichero de salida y al
892 dimensions = [300,300],
894 explicit(x^4,x,-1,1)) $
896 dimensions = [300,300],
898 explicit(x^4,x,-1,1)) $
901 La opción @code{dimensions} aplicada a una salida eps.
902 En este caso queremos un fichero eps con dimensiones A4.
906 (%i2) A4portrait: 100*[21, 29.7]$
908 dimensions = A4portrait,
910 explicit(x^2-y^2,x,-2,2,y,-2,2)) $
916 @defvr {Opción gráfica} draw_realpart
917 Valor por defecto: @code{true}
919 Cuando vale @code{true}, las funciones a dibujar se consideran funciones complejas cuyas
920 partes reales se deben dibujar; cuando la opción vale @code{false}, no se dibujará
921 nada en caso de que la función no devuelve valores reales.
923 Esta opción afecta a los objetos @code{explicit} y @code{parametric} en 2D y 3D, y al
924 objeto @code{parametric_surface}.
928 La opción @code{draw_realpart} afecta a los objetos @code{explicit} y @code{parametric}.
933 draw_realpart = false,
934 explicit(sqrt(x^2 - 4*x) - x, x, -1, 5),
936 draw_realpart = true,
937 parametric(x,sqrt(x^2 - 4*x) - x + 1, x, -1, 5) );
944 @defvr {Opción gráfica} enhanced3d
945 Valor por defecto: @code{none}
947 Cuando @code{enhanced3d} vale @code{none}, las superficies no se colorean en escenas 3D.
948 Para obtener una superficie coloreada se debe asignar una lista a la opción
949 @code{enhanced3d}, en la que el primer elemento es una expresión y el resto
950 son los nombres de las variables o parámetros utilizados en la expresión.
951 Una lista tal como @code{[f(x,y,z), x, y, z]} significa que al punto
952 @code{[x,y,z]} de la superficie se le asigna el número @code{f(x,y,z)}, el
953 cual será coloreado de acuerdo con el valor actual de @code{palette}.
954 Para aquellos objetos gráficos 3D definidos en términos de parámetros,
955 es posible definir el número de color en términos de dichos parámetros,
956 como en @code{[f(u), u]}, para los objetos @code{parametric} y @code{tube},
957 o @code{[f(u,v), u, v]}, para el objeto @code{parametric_surface}.
958 Mientras que todos los objetos 3D admiten el modelo basado en coordenadas
959 absolutas, @code{[f(x,y,z), x, y, z]}, solamente dos de ellos, esto es
960 @code{explicit} y @code{elevation_grid}, aceptan también el modelo basado en las
961 coordenadas @code{[x,y]}, @code{[f(x,y), x, y]}. El objeto 3D @code{implicit}
962 acepta solamente el modelo @code{[f(x,y,z), x, y, z]}. El objeto @code{points}
963 también acepta el modelo @code{[f(x,y,z), x, y, z]}, pero cuando los puntos
964 tienen naturaleza cronológica también admite el modelo @code{[f(k), k]},
965 siendo @code{k} un parámetro de orden.
967 Cuando a @code{enhanced3d} se le asigna algo diferente de @code{none}, se ignoran
968 las opciones @code{color} y @code{surface_hide}.
970 Los nombres de las variables definidas en las listas pueden ser diferentes
971 de aquellas utilizadas en las definiciones de los objetos gráficos.
973 A fin de mantener compatibilidad con versiones anteriores, @code{enhanced3d = false}
974 es equivalente a @code{enhanced3d = none} y @code{enhanced3d = true} es
975 equivalente a @code{enhanced3d = [z, x, y, z]}. Si a @code{enhanced3d} se le
976 asigna una expresión, sus variables deben ser las mismas utilizadas en la
977 definición de la superficie. Esto no es necesario cuando se utilizan listas.
979 Sobre la definición de paletas, véase @code{palette}.
983 Objeto @code{explicit} con coloreado definido por el modelo @code{[f(x,y,z), x, y, z]}.
988 enhanced3d = [x-z/10,x,y,z],
990 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3))$
993 Objeto @code{explicit} con coloreado definido por el modelo @code{[f(x,y), x, y]}.
994 Los nombres de las variables definidas en las listas pueden ser diferentes
995 de aquellas utilizadas en las definiciones de los objetos gráficos 3D; en este
996 caso, @code{r} corresponde a @code{x} y @code{s} a @code{y}.
1001 enhanced3d = [sin(r*s),r,s],
1002 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3))$
1005 Objeto @code{parametric} con coloreado definido por el modelo @code{[f(x,y,z), x, y, z]}.
1012 enhanced3d = [if y>= 0 then 1 else 0, x, y, z],
1013 parametric(sin(u)^2,cos(u),u,u,0,4*%pi)) $
1016 Objeto @code{parametric} con coloreado definido por el modelo @code{[f(u), u]}.
1017 En este caso, @code{(u-1)^2} es una simplificación de @code{[(u-1)^2,u]}.
1024 enhanced3d = (u-1)^2,
1025 parametric(cos(5*u)^2,sin(7*u),u-2,u,0,2))$
1028 Objeto @code{elevation_grid} con coloreado definido por el modelo @code{[f(x,y), x, y]}.
1034 makelist(makelist(cos(i^2/80-k/30),k,1,30),i,1,20)) $
1036 enhanced3d = [cos(x*y*10),x,y],
1037 elevation_grid(m,-1,-1,2,2),
1042 Objeto @code{tube} con coloreado definido por el modelo @code{[f(x,y,z), x, y, z]}.
1047 enhanced3d = [cos(x-y),x,y,z],
1050 tube(cos(a), a, 0, 1, a, 0, 4*%pi) )$
1053 Objeto @code{tube} con coloreado definido por el modelo @code{[f(u), u]}.
1054 En este caso, @code{enhanced3d = -a} puede ser una simplificación de
1055 @code{enhanced3d = [-foo,foo]}.
1060 capping = [true, false],
1061 palette = [26,15,-2],
1062 enhanced3d = [-foo, foo],
1063 tube(a, a, a^2, 1, a, -2, 2) )$
1066 Objetos @code{implicit} y @code{points} con coloreado definido por el
1067 modelo @code{[f(x,y,z), x, y, z]}.
1072 enhanced3d = [x-y,x,y,z],
1073 implicit((x^2+y^2+z^2-1)*(x^2+(y-1.5)^2+z^2-0.5)=0.015,
1074 x,-1,1,y,-1.2,2.3,z,-1,1)) $
1075 (%i3) m: makelist([random(1.0),random(1.0),random(1.0)],k,1,2000)$
1077 point_type = filled_circle,
1079 enhanced3d = [u+v-w,u,v,w],
1083 cuando los puntos tienen naturaleza cronológica también se admite
1084 el modelo @code{[f(k), k]}, siendo @code{k} un parámetro de orden.
1088 (%i2) m:makelist([random(1.0), random(1.0), random(1.0)],k,1,5)$
1090 enhanced3d = [sin(j), j],
1092 point_type = filled_circle,
1093 points_joined = true,
1100 @defvr {Opción gráfica} error_type
1101 Valor por defecto: @code{y}
1103 Dependiendo de su valor, el cual puede ser @code{x}, @code{y} o @code{xy},
1104 el objeto gráfico @code{errors} dibujará puntos con barras de error horizontales,
1105 verticales, o ambas. Si @code{error_type=boxes}, se dibujarán cajas en lugar de cruces.
1107 Véase también @code{errors}.
1112 @defvr {Opción gráfica} file_name
1113 Valor por defecto: @code{"maxima_out"}
1115 @code{file_name} es el nombre del fichero en el que los terminales @code{png},
1116 @code{jpg}, @code{gif}, @code{eps}, @code{eps_color}, @code{pdf}, @code{pdfcairo}
1117 y @code{svg} guardarán el gráfico.
1119 Puesto que ésta es una opción global, su posición dentro de la
1120 descripción de la escena no reviste importancia. También puede
1121 usarse como argumento de la función @code{draw}.
1127 (%i2) draw2d(file_name = "myfile",
1128 explicit(x^2,x,-1,1),
1132 Véanse también @code{terminal}, @code{dimensions}.
1137 @defvr {Opción gráfica} fill_color
1138 Valor por defecto: @code{"red"}
1140 @code{fill_color} especifica el color para rellenar polígonos
1141 y funciones explícitas bidimensionales.
1143 Véase @code{color} para más información sobre cómo definir
1150 @defvr {Opción gráfica} fill_density
1151 Valor por defecto: 0
1153 @code{fill_density} es un número entre 0 y 1 que especifica
1154 la intensidad del color de relleno (dado por @code{fill_color})
1155 en los objetos @code{bars}.
1157 Véase @code{bars} para ejemplos.
1163 @defvr {Opción gráfica} filled_func
1164 Valor por defecto: @code{false}
1166 La opción @code{filled_func} establece cómo se van a rellenar las regiones
1167 limitadas por funciones. Si @code{filled_func} vale @code{true}, la
1168 región limitada por la función definida en el objeto @code{explicit}
1169 y el borde inferior del la ventana gráfica se rellena con @code{fill_color}.
1170 Si @code{filled_func} guarda la expresión de una función, entonces la
1171 región limitada por esta función y la definida en el objeto @code{explicit}
1172 será la que se rellene. Por defecto, las funciones explícitas
1175 Un caso de especial utilidad es @code{filled_func=0}, con lo que se sombrea la
1176 región limitada por el eje horizontal y la función explícita.
1178 Esta opción sólo afecta al objeto gráfico bidimensional @code{explicit}.
1182 Región limitada por un objeto @code{explicit} y el borde inferior
1183 de la ventana gráfica.
1186 (%i2) draw2d(fill_color = red,
1188 explicit(sin(x),x,0,10) )$
1191 Región limitada por un objeto @code{explicit} y la función
1192 definida en la opción @code{filled_func}. Nótese que la
1193 variable en @code{filled_func} debe ser la misma que la utilizada en
1197 (%i2) draw2d(fill_color = grey,
1198 filled_func = sin(x),
1199 explicit(-sin(x),x,0,%pi));
1202 Véanse también @code{fill_color} y @code{explicit}.
1207 @defvr {Opción gráfica} font
1208 Valor por defecto: @code{""} (cadena vacía)
1210 Esta opción permite seleccionar el tipo de fuente a utilizar por el
1211 terminal. Sólo se puede utilizar un tipo de fuente y tamaño por
1214 Puesto que ésta es una opción global, su posición dentro de la
1215 descripción de la escena no reviste importancia.
1217 Véase también @code{font_size}.
1219 Gnuplot no puede gestionar por sí mismo las fuentes,
1220 dejando esta tarea a las librerías que dan soporte a los
1221 diferentes terminales, cada uno con su propia manera de controlar
1222 la tipografía. A continuación un breve resumen:
1227 Utiliza el mecanismo habitual para suministrar las fuentes en x11.
1232 (%i2) draw2d(font = "Arial",
1234 label(["Arial font, size 20",1,1]))$
1239 El terminal de windows no permite cambiar fuentes desde dentro
1240 del gráfico. Una vez se ha creado el gráfico, se pueden cambiar las
1241 fuentes haciendo clic derecho en el menú de la ventana gráfica.
1245 La librería @i{libgd} utiliza la ruta a las fuentes
1246 almacenada en la variable de entorno @env{GDFONTPATH}; en tal caso
1247 sólo es necesario darle a la opción @code{font} el nombre de la
1248 fuente. También es posible darle la ruta completa al fichero de la fuente.
1252 A la opción @code{font} se le puede dar la ruta completa al fichero de la fuente:
1255 (%i2) path: "/usr/share/fonts/truetype/freefont/" $
1256 (%i3) file: "FreeSerifBoldItalic.ttf" $
1258 font = concat(path, file),
1261 label(["FreeSerifBoldItalic font, size 20",1,1]),
1265 Si la variable de entorno @env{GDFONTPATH} almacena la ruta
1266 a la carpeta donde se alojan las fuentes, es posible darle a la
1267 opción @code{font} sólo el nombre de la fuente:
1271 font = "FreeSerifBoldItalic",
1274 label(["FreeSerifBoldItalic font, size 20",1,1]),
1280 Las fuentes estándar de Postscript son: @code{"Times-Roman"}, @code{"Times-Italic"}, @code{"Times-Bold"}, @code{"Times-BoldItalic"}, @code{"Helvetica"}, @code{"Helvetica-Oblique"}, @code{"Helvetica-Bold"}, @code{"Helvetic-BoldOblique"}, @code{"Courier"}, @code{"Courier-Oblique"}, @code{"Courier-Bold"} y @code{"Courier-BoldOblique"}.
1286 font = "Courier-Oblique",
1288 label(["Courier-Oblique font, size 15",1,1]),
1294 Utiliza las mismas fuentes que @i{Postscript}.
1298 Utiliza las mismas fuentes que @i{wxt}.
1302 La librería @i{pango} encuentra las fuentes por medio de la utilidad @code{fontconfig}.
1306 La fuente por defecto es @code{"Times-Roman"}.
1309 La documentación de gnuplot es una importante fuente de información sobre terminales y fuentes.
1314 @defvr {Opción gráfica} font_size
1315 Valor por defecto: 10
1317 Esta opción permite seleccionar el tamaño de la fuente a utilizar por el
1318 terminal. Sólo se puede utilizar un tipo de fuente y tamaño por
1319 gráfico. @code{font_size} sólo se activa cuando la opción @code{font}
1320 tiene un valor diferente de la cadena vacía.
1322 Puesto que ésta es una opción global, su posición dentro de la
1323 descripción de la escena no reviste importancia.
1325 Véase también @code{font}.
1330 @defvr {Opción gráfica} gnuplot_file_name
1331 Valor por defecto: @code{"maxout.gnuplot"}
1333 @code{gnuplot_file_name} es el nombre del fichero que
1334 almacena las instrucciones a ser procesadas por Gnuplot.
1336 Puesto que ésta es una opción global, su posición dentro de la
1337 descripción de la escena no reviste importancia. También puede
1338 usarse como argumento de la función @code{draw}.
1345 file_name = "my_file",
1346 gnuplot_file_name = "my_commands_for_gnuplot",
1347 data_file_name = "my_data_for_gnuplot",
1349 explicit(x^2,x,-1,1)) $
1352 Véase también @code{data_file_name}.
1358 @defvr {Opción gráfica} grid
1359 Valor por defecto: @code{false}
1363 Cuando @code{grid} toma un valor distinto de @code{false}, se dibujará una rejilla
1364 sobre el plano @var{xy}. Si a @code{grid} se le asigna el valor @code{true}, se dibujará
1365 una línea de la rejilla por cada marca que haya sobre los ejes. Si a @code{grid} se le
1366 asigna la lista @code{[nx,ny]}, con @var{[nx,ny] > [0,0]}, se dibujarán @code{nx}
1367 líneas por cada marca del eje-@var{x} y @var{ny} líneas por cada marca del eje-@var{y}.
1369 Puesto que ésta es una opción global, su posición dentro de la
1370 descripción de la escena no reviste importancia.
1376 (%i2) draw2d(grid = true,
1377 explicit(exp(u),u,-2,2))$
1384 @defvr {Opción gráfica} head_angle
1385 Valor por defecto: 45
1387 @code{head_angle} indica el ángulo, en grados, entre la flecha y el
1388 segmento del vector.
1390 Esta opción sólo es relevante para objetos de tipo @code{vector}.
1396 (%i2) draw2d(xrange = [0,10],
1400 vector([1,1],[0,6]),
1402 vector([2,1],[0,6]),
1404 vector([3,1],[0,6]),
1406 vector([4,1],[0,6]),
1408 vector([5,1],[0,6]),
1410 vector([6,1],[0,6]),
1412 vector([7,1],[0,6]),
1414 vector([8,1],[0,6]),
1416 vector([9,1],[0,6]) )$
1419 Véanse también @code{head_both}, @code{head_length} y @code{head_type}.
1425 @defvr {Opción gráfica} head_both
1426 Valor por defecto: @code{false}
1428 Cuando @code{head_both} vale @code{true}, los vectores se dibujan bidireccionales.
1429 Si vale @code{false}, se dibujan unidireccionales.
1431 Esta opción sólo es relevante para objetos de tipo @code{vector}.
1437 (%i2) draw2d(xrange = [0,8],
1440 vector([1,1],[6,0]),
1442 vector([1,7],[6,0]) )$
1445 Véanse también @code{head_length}, @code{head_angle} y @code{head_type}.
1451 @defvr {Opción gráfica} head_length
1452 Valor por defecto: 2
1454 @code{head_length} indica, en las unidades del eje @var{x}, la
1455 longitud de las flechas de los vectores.
1457 Esta opción sólo es relevante para objetos de tipo @code{vector}.
1463 (%i2) draw2d(xrange = [0,12],
1465 vector([0,1],[5,5]),
1467 vector([2,1],[5,5]),
1469 vector([4,1],[5,5]),
1471 vector([6,1],[5,5]))$
1474 Véanse también @code{head_both}, @code{head_angle} y @code{head_type}.
1480 @defvr {Opción gráfica} head_type
1481 Valor por defecto: @code{filled}
1483 @code{head_type} se utiliza para especificar cómo se habrán de
1484 dibujar las flechas de los vectores. Los valores posibles para
1485 esta opción son: @code{filled} (flechas cerradas y rellenas),
1486 @code{empty} (flechas cerradas pero no rellenas) y @code{nofilled}
1489 Esta opción sólo es relevante para objetos de tipo @code{vector}.
1495 (%i2) draw2d(xrange = [0,12],
1498 vector([0,1],[5,5]), /* default type */
1500 vector([3,1],[5,5]),
1501 head_type = 'nofilled,
1502 vector([6,1],[5,5]))$
1505 Véanse también @code{head_both}, @code{head_angle} y @code{head_length}.
1510 @defvr {Opción gráfica} interpolate_color
1511 Valor por defecto: @code{false}
1513 Esta opción solo es relevante si @code{enhanced3d} tiene un valor
1514 diferente de @code{false}.
1516 Si @code{interpolate_color} vale @code{false}, las superficies se colorean con
1517 cuadriláteros homogéneos. Si vale @code{true}, las transiciones de colores se
1518 suavizan por interpolación.
1520 La opción @code{interpolate_color} también acepta una lista de dos números, @code{[m,n]}.
1521 Para @var{m} y @var{n} positivos, cada cuadrilátero o triángulo se interpola
1522 @var{m} y @var{n} veces en la dirección respectiva. Para @var{m} y @var{n} negativos,
1523 la frecuencia de interpolación se elige de forma que se dibujen al menos @var{abs(m)} y
1524 @var{abs(n)} puntos, pudiéndose considerar esto como una función especial de enrejado.
1525 Con valores nulos, esto es @code{interpolate_color=[0,0]}, se seleccionará un número
1526 óptimo de puntos interpolados en la superficie.
1528 Además, @code{interpolate_color=true} es equivalente a @code{interpolate_color=[0,0]}.
1530 La interpolación de colores en superficies paramétricas puede dar resultados
1535 Interpolación de color con funciones explícitas.
1540 enhanced3d = sin(x*y),
1541 explicit(20*exp(-x^2-y^2)-10, x ,-3, 3, y, -3, 3)) $
1543 interpolate_color = true,
1544 enhanced3d = sin(x*y),
1545 explicit(20*exp(-x^2-y^2)-10, x ,-3, 3, y, -3, 3)) $
1547 interpolate_color = [-10,0],
1548 enhanced3d = sin(x*y),
1549 explicit(20*exp(-x^2-y^2)-10, x ,-3, 3, y, -3, 3)) $
1552 Interpolación de color con el objeto @code{mesh}.
1558 mesh([[1,1,3], [7,3,1],[12,-2,4],[15,0,5]],
1559 [[2,7,8], [4,3,1],[10,5,8], [12,7,1]],
1560 [[-2,11,10],[6,9,5],[6,15,1], [20,15,2]])) $
1563 interpolate_color = true,
1564 mesh([[1,1,3], [7,3,1],[12,-2,4],[15,0,5]],
1565 [[2,7,8], [4,3,1],[10,5,8], [12,7,1]],
1566 [[-2,11,10],[6,9,5],[6,15,1], [20,15,2]])) $
1569 interpolate_color = true,
1571 mesh([[1,1,3], [7,3,1],[12,-2,4],[15,0,5]],
1572 [[2,7,8], [4,3,1],[10,5,8], [12,7,1]],
1573 [[-2,11,10],[6,9,5],[6,15,1], [20,15,2]])) $
1576 Véase también @code{enhanced3d}.
1582 @defvr {Opción gráfica} ip_grid
1583 Valor por defecto: @code{[50, 50]}
1585 @code{ip_grid} establece la rejilla del primer muestreo para los
1586 gráficos de funciones implícitas.
1588 Esta opción sólo es relevante para funciones de tipo @code{implicit}.
1593 @defvr {Opción gráfica} ip_grid_in
1594 Valor por defecto: @code{[5, 5]}
1596 @code{ip_grid_in} establece la rejilla del segundo muestreo para los
1597 gráficos de funciones implícitas.
1599 Esta opción sólo es relevante para funciones de tipo @code{implicit}.
1605 @defvr {Opción gráfica} key
1606 Valor por defecto: @code{""} (cadena vacía)
1608 @code{key} es la clave de una función en la leyenda. Si @code{key}
1609 es una cadena vacía, las funciones no tendrán clave
1610 asociada en la leyenda.
1612 Esta opción afecta a los siguientes objetos gráficos:
1615 @code{gr2d}: @code{points}, @code{polygon}, @code{rectangle},
1616 @code{ellipse}, @code{vector}, @code{explicit}, @code{implicit},
1617 @code{parametric} y @code{polar}.
1620 @code{gr3d}: @code{points}, @code{explicit}, @code{parametric},
1621 y @code{parametric_surface}.
1628 (%i2) draw2d(key = "Sinus",
1629 explicit(sin(x),x,0,10),
1632 explicit(cos(x),x,0,10) )$
1638 @defvr {Opción gráfica} key_pos
1639 Valor por defecto: @code{""} (cadena vacía)
1641 La opción @code{key_pos} establece en qué posición se colocará la leyenda.
1642 Si @code{key} es una cadena vacía, entonces se utilizará por defecto la
1643 posición @code{"top_right"}.
1644 Los valores disponibles para esta opción son: @code{top_left}, @code{top_center},
1645 @code{top_right}, @code{center_left}, @code{center}, @code{center_right},
1646 @code{bottom_left}, @code{bottom_center} y @code{bottom_right}.
1648 Puesto que ésta es una opción global, su posición dentro de la
1649 descripción de la escena no reviste importancia.
1658 explicit(x, x,0,10),
1661 explicit(x^2,x,0,10))$
1665 explicit(x+y,x,0,10,y,0,10),
1668 explicit(x^2+y^2,x,0,10,y,0,10))$
1675 @defvr {Opción gráfica} label_alignment
1676 Valor por defecto: @code{center}
1678 @code{label_alignment} se utiliza para especificar dónde se escribirán
1679 las etiquetas con respecto a las coordenadas de referencia. Los valores posibles para
1680 esta opción son: @code{center}, @code{left} y @code{right}.
1682 Esta opción sólo es relevante para objetos de tipo @code{label}.
1688 (%i2) draw2d(xrange = [0,10],
1690 points_joined = true,
1691 points([[5,0],[5,10]]),
1693 label(["Centered alignment (default)",5,2]),
1694 label_alignment = 'left,
1695 label(["Left alignment",5,5]),
1696 label_alignment = 'right,
1697 label(["Right alignment",5,8]))$
1700 Véanse también @code{label_orientation} y @code{color}.
1706 @defvr {Opción gráfica} label_orientation
1707 Valor por defecto: @code{horizontal}
1709 @code{label_orientation} se utiliza para especificar la orientación
1710 de las etiquetas. Los valores posibles para esta opción son:
1711 @code{horizontal} y @code{vertical}.
1713 Esta opción sólo es relevante para objetos de tipo @code{label}.
1717 En este ejemplo, el punto ficticio que se añade sirve para obtener
1718 la imagen, ya que el paquete @code{draw} necesita siempre de datos para
1719 construir la escena.
1722 (%i2) draw2d(xrange = [0,10],
1727 label(["Horizontal orientation (default)",5,2]),
1728 label_orientation = 'vertical,
1730 label(["Vertical orientation",1,5]))$
1733 Véanse también @code{label_alignment} y @code{color}.
1739 @defvr {Opción gráfica} line_type
1740 Valor por defecto: @code{solid}
1742 @code{line_type} indica cómo se van a dibujar las líneas;
1743 valores posibles son @code{solid} y @code{dots}, que están disponibles
1744 en todos los terminales, y @code{dashes}, @code{short_dashes},
1745 @code{short_long_dashes}, @code{short_short_long_dashes} y @code{dot_dash},
1746 que no esán disponibles en los terminales @code{png}, @code{jpg} y @code{gif}.
1748 Esta opción afecta a los siguientes objetos gráficos:
1751 @code{gr2d}: @code{points}, @code{polygon}, @code{rectangle},
1752 @code{ellipse}, @code{vector}, @code{explicit}, @code{implicit},
1753 @code{parametric} y @code{polar}.
1756 @code{gr3d}: @code{points}, @code{explicit}, @code{parametric} y @code{parametric_surface}.
1763 (%i2) draw2d(line_type = dots,
1764 explicit(1 + x^2,x,-1,1),
1765 line_type = solid, /* default */
1766 explicit(2 + x^2,x,-1,1))$
1769 Véase también @code{line_width}.
1775 @defvr {Opción gráfica} line_width
1776 Valor por defecto: 1
1778 @code{line_width} es el ancho de las líneas a dibujar.
1779 Su valor debe ser un número positivo.
1781 Esta opción afecta a los siguientes objetos gráficos:
1784 @code{gr2d}: @code{points}, @code{polygon}, @code{rectangle},
1785 @code{ellipse}, @code{vector}, @code{explicit}, @code{implicit},
1786 @code{parametric} y @code{polar}.
1789 @code{gr3d}: @code{points} y @code{parametric}.
1796 (%i2) draw2d(explicit(x^2,x,-1,1), /* default width */
1798 explicit(1 + x^2,x,-1,1),
1800 explicit(2 + x^2,x,-1,1))$
1803 Véase también @code{line_type}.
1809 @defvr {Opción gráfica} logcb
1810 Valor por defecto: @code{false}
1812 Cuando @code{logcb} vale @code{true}, la escala de colores se dibuja
1815 Cuando @code{enhanced3d} o @code{colorbox} vale @code{false}, la
1816 opción @code{logcb} no tiene efecto alguno.
1818 Puesto que ésta es una opción global, su posición dentro de la
1819 descripción de la escena no reviste importancia.
1830 palette = [-15,24,-9],
1831 explicit(exp(x^2-y^2), x,-2,2,y,-2,2)) $
1834 Véanse también @code{enhanced3d}, @code{colorbox} y @code{cbrange}.
1840 @defvr {Opción gráfica} logx
1841 Valor por defecto: @code{false}
1843 Cuando @code{logx} vale @code{true}, el eje @var{x} se dibuja
1844 en la escala logarítmica.
1846 Puesto que ésta es una opción global, su posición dentro de la
1847 descripción de la escena no reviste importancia.
1853 (%i2) draw2d(explicit(log(x),x,0.01,5),
1857 Véanse también @code{logy}, @code{logx_secondary}, @code{logy_secondary} y @code{logz}.
1863 @defvr {Opción gráfica} logx_secondary
1864 Valor por defecto: @code{false}
1866 Si @code{logx_secondary} vale @code{true}, el eje secundario de @var{x}
1867 se dibuja en la escala logarítmica.
1869 Puesto que ésta es una opción global, su posición dentro de la
1870 descripción de la escena no reviste importancia.
1878 key="x^2, linear scale",
1880 explicit(x^2,x,1,100),
1881 xaxis_secondary = true,
1882 xtics_secondary = true,
1883 logx_secondary = true,
1884 key = "x^2, logarithmic x scale",
1886 explicit(x^2,x,1,100) )$
1889 Véanse también @code{logx}, @code{logy}, @code{logy_secondary} y @code{logz}.
1895 @defvr {Opción gráfica} logy
1896 Valor por defecto: @code{false}
1898 Cuando @code{logy} vale @code{true}, el eje @var{y} se dibuja
1899 en la escala logarítmica.
1901 Puesto que ésta es una opción global, su posición dentro de la
1902 descripción de la escena no reviste importancia.
1908 (%i2) draw2d(logy = true,
1909 explicit(exp(x),x,0,5))$
1912 Véanse también @code{logx}, @code{logx_secondary}, @code{logy_secondary} y @code{logz}.
1917 @defvr {Opción gráfica} logy_secondary
1918 Valor por defecto: @code{false}
1920 Si @code{logy_secondary} vale @code{true}, el eje secundario de @var{y}
1921 se dibuja en la escala logarítmica.
1923 Puesto que ésta es una opción global, su posición dentro de la
1924 descripción de la escena no reviste importancia.
1932 key="x^2, linear scale",
1934 explicit(x^2,x,1,100),
1935 yaxis_secondary = true,
1936 ytics_secondary = true,
1937 logy_secondary = true,
1938 key = "x^2, logarithmic y scale",
1940 explicit(x^2,x,1,100) )$
1943 Véanse también @code{logx}, @code{logy}, @code{logx_secondary} y @code{logz}.
1949 @defvr {Opción gráfica} logz
1950 Valor por defecto: @code{false}
1952 Cuando @code{logz} vale @code{true}, el eje @var{z} se dibuja
1953 en la escala logarítmica.
1955 Puesto que ésta es una opción global, su posición dentro de la
1956 descripción de la escena no reviste importancia.
1962 (%i2) draw3d(logz = true,
1963 explicit(exp(u^2+v^2),u,-2,2,v,-2,2))$
1966 Véanse también @code{logx} and @code{logy}.
1972 @defvr {Opción gráfica} nticks
1973 Valor por defecto: 29
1975 En 2d, @code{nticks} es el número de puntos a utilizar por el programa
1976 adaptativo que genera las funciones explícitas. También es el número de
1977 puntos que se representan en las curvas paramétricas y polares.
1979 Esta opción afecta a los siguientes objetos gráficos:
1982 @code{gr2d}: @code{ellipse}, @code{explicit}, @code{parametric} y @code{polar}.
1985 @code{gr3d}: @code{parametric}.
1992 (%i2) draw2d(transparent = true,
1993 ellipse(0,0,4,2,0,180),
1995 ellipse(0,0,4,2,180,180) )$
2003 @defvr {Opción gráfica} palette
2004 Valor por defecto: @code{color}
2006 @code{palette} indica cómo transformar niveles de gris en componentes cromáticas.
2007 Trabaja conjuntamente con la opción @code{enhanced3d} en gráficos 3D, la cual asocia cada punto
2008 de una superficie con un número real o nivel de gris. También trabaja con imágenes grises.
2009 Con @code{palette}, estos niveles se transforman en colores.
2011 Hay dos formas de definir estas transformaciones.
2013 En primer lugar, @code{palette} puede ser un vector de longitud tres con sus componentes tomando
2014 valores enteros en el rango desde -36 a +36; cada valor es un
2015 índice para seleccionar una fórmula que transforma los niveles
2016 numéricos en las componentes cromáticas rojo, verde y azul:
2020 6: x^4 7: sqrt(x) 8: sqrt(sqrt(x))
2021 9: sin(90x) 10: cos(90x) 11: |x-0.5|
2022 12: (2x-1)^2 13: sin(180x) 14: |cos(180x)|
2023 15: sin(360x) 16: cos(360x) 17: |sin(360x)|
2024 18: |cos(360x)| 19: |sin(720x)| 20: |cos(720x)|
2025 21: 3x 22: 3x-1 23: 3x-2
2026 24: |3x-1| 25: |3x-2| 26: (3x-1)/2
2027 27: (3x-2)/2 28: |(3x-1)/2| 29: |(3x-2)/2|
2028 30: x/0.32-0.78125 31: 2*x-0.84 32: 4x;1;-2x+1.84;x/0.08-11.5
2029 33: |2*x - 0.5| 34: 2*x 35: 2*x - 0.5
2032 los números negativos se interpretan como colores invertidos
2033 de las componentes cromáticas.
2034 @code{palette = gray} y @code{palette = color} son atajos para
2035 @code{palette = [3,3,3]} y @code{palette = [7,5,15]}, respectivamente.
2037 En segundo lugar, @code{palette} puede ser una paleta de colores definida
2038 por el usuario. En este caso, el formato para crear una paleta de longitud
2039 @code{n} es @code{palette=[color_1, color_2, ..., color_n]},
2040 donde @code{color_i} es un color correctamente definido (véase la opción
2041 @code{color}), de tal manera que @code{color_1} se asigna al valor más bajo
2042 del nivel y @code{color_n} al más alto. El resto de colores se interpolan.
2044 Puesto que ésta es una opción global, su posición dentro de la
2045 descripción de la escena no reviste importancia.
2049 Trabaja conjuntamente con la opción @code{enhanced3d} en gráficos 3D.
2054 enhanced3d = [z-x+2*y,x,y,z],
2055 palette = [32, -8, 17],
2056 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3))$
2059 También trabaja con imágenes grises.
2065 makelist(makelist(random(200),i,1,30),i,1,30))$
2066 (%i3) /* palette = color, default */
2067 draw2d(image(im,0,0,30,30))$
2068 (%i4) draw2d(palette = gray, image(im,0,0,30,30))$
2069 (%i5) draw2d(palette = [15,20,-4],
2071 image(im,0,0,30,30))$
2074 @code{palette} puede ser una paleta de colores definida
2075 por el usuario. En este ejemplo, valores bajos de @code{x}
2076 se colorean en rojo y altos en amarillo.
2081 palette = [red, blue, yellow],
2083 explicit(x^2+y^2,x,-1,1,y,-1,1)) $
2086 Véase también @code{colorbox} y @code{enhanced3d}.
2091 @defvr {Opción gráfica} point_size
2092 Valor por defecto: 1
2094 @code{point_size} establece el tamaño de los puntos dibujados. Debe
2095 ser un número no negativo.
2097 Esta opción no tiene efecto alguno cuando a la opción gráfica
2098 @code{point_type} se le ha dado el valor @code{dot}.
2100 Esta opción afecta a los siguientes objetos gráficos:
2103 @code{gr2d}: @code{points}.
2106 @code{gr3d}: @code{points}.
2114 points(makelist([random(20),random(50)],k,1,10)),
2116 points(makelist(k,k,1,20),makelist(random(30),k,1,20)))$
2122 @defvr {Opción gráfica} point_type
2123 Valor por defecto: 1
2125 @code{point_type} indica cómo se van a dibujar los puntos aislados. Los valores
2126 para esta opción pueden ser índices enteros mayores o iguales que -1,
2127 o también nombres de estilos: @code{$none} (-1), @code{dot} (0), @code{plus} (1),
2128 @code{multiply} (2), @code{asterisk} (3), @code{square} (4), @code{filled_square} (5),
2129 @code{circle} (6), @code{filled_circle} (7), @code{up_triangle} (8),
2130 @code{filled_up_triangle} (9), @code{down_triangle} (10),
2131 @code{filled_down_triangle} (11), @code{diamant} (12) y @code{filled_diamant} (13).
2133 Esta opción afecta a los siguientes objetos gráficos:
2136 @code{gr2d}: @code{points}.
2139 @code{gr3d}: @code{points}.
2146 (%i2) draw2d(xrange = [0,10],
2149 point_type = diamant,
2150 points([[1,1],[5,1],[9,1]]),
2151 point_type = filled_down_triangle,
2152 points([[1,2],[5,2],[9,2]]),
2153 point_type = asterisk,
2154 points([[1,3],[5,3],[9,3]]),
2155 point_type = filled_diamant,
2156 points([[1,4],[5,4],[9,4]]),
2158 points([[1,5],[5,5],[9,5]]),
2160 points([[1,6],[5,6],[9,6]]),
2161 point_type = filled_circle,
2162 points([[1,7],[5,7],[9,7]]),
2164 points([[1,8],[5,8],[9,8]]),
2165 point_type = filled_diamant,
2166 points([[1,9],[5,9],[9,9]]) )$
2172 @defvr {Opción gráfica} points_joined
2173 Valor por defecto: @code{false}
2175 Cuando @code{points_joined} vale @code{true}, los puntos se unen con segmentos;
2176 si vale @code{false}, se dibujarán puntos aislados. Un tercer valor posible
2177 para esta opción gráfica es @code{impulses}; en tal caso, se dibujarán
2178 segmentos verticales desde los puntos hasta el eje-x (2D) o hasta el plano-xy (3D).
2180 Esta opción afecta a los siguientes objetos gráficos:
2183 @code{gr2d}: @code{points}.
2186 @code{gr3d}: @code{points}.
2193 (%i2) draw2d(xrange = [0,10],
2196 point_type = up_triangle,
2198 points([[1,1],[5,1],[9,1]]),
2199 points_joined = true,
2200 point_type = square,
2202 points([[1,2],[5,2],[9,2]]),
2203 point_type = circle,
2206 points([[1,3],[5,3],[9,3]]) )$
2212 @defvr {Opción gráfica} proportional_axes
2213 Valor por defecto: @code{none}
2215 Cuando @code{proportional_axes} es igual a @code{xy} o @code{xy}, una escena
2216 2D o 3D se dibujará con los ejes proporcionales a sus longitudes relativas.
2218 Puesto que ésta es una opción global, su posición dentro de la
2219 descripción de la escena no reviste importancia.
2221 Esta opción sólo funciona con Gnuplot versión 4.2.6
2231 ellipse(0,0,1,1,0,360),
2235 ellipse(0,0,2,1/2,0,360),
2236 proportional_axes = xy) $
2245 gr2d(proportional_axes = xy,
2246 explicit(x^2,x,0,1)),
2247 gr2d(explicit(x^2,x,0,1),
2250 proportional_axes=xy),
2251 gr2d(explicit(x^2,x,0,1)))$
2259 @defvr {Opción gráfica} surface_hide
2260 Valor por defecto: @code{false}
2262 Cuando @code{surface_hide} vale @code{true}, las partes ocultas no
2263 se muestran en las superficies de las escenas 3d.
2265 Puesto que ésta es una opción global, su posición dentro de la
2266 descripción de la escena no reviste importancia.
2272 (%i2) draw(columns=2,
2273 gr3d(explicit(exp(sin(x)+cos(x^2)),x,-3,3,y,-3,3)),
2274 gr3d(surface_hide = true,
2275 explicit(exp(sin(x)+cos(x^2)),x,-3,3,y,-3,3)) )$
2282 @defvr {Opción gráfica} terminal
2283 Valor por defecto: @code{screen}
2285 Selecciona el terminal a utilizar por Gnuplot; valores posibles son:
2286 @code{screen} (por defecto), @code{png}, @code{pngcairo}, @code{jpg}, @code{gif},
2287 @code{eps}, @code{eps_color}, @code{epslatex}, @code{epslatex_standalone},
2288 @code{svg}, @code{dumb}, @code{dumb_file}, @code{pdf}, @code{pdfcairo},
2289 @code{wxt}, @code{animated_gif}, @code{multipage_pdfcairo}, @code{multipage_pdf},
2290 @code{multipage_eps}, @code{multipage_eps_color} y @code{aquaterm}.
2292 Los terminales @code{screen}, @code{wxt} y @code{aquaterm} también se pueden
2293 definir como una lista de dos elementos: el propio nombre del terminal y un
2294 número entero no negativo. De esta forma se pueden abrir varias ventanas al
2295 mismo tiempo, cada una de ellas con su número correspondiente. Esta modalidad
2296 no funciona en plataformas Windows.
2298 Puesto que ésta es una opción global, su posición dentro de la
2299 descripción de la escena no reviste importancia. También puede
2300 usarse como argumento de la función @code{draw}.
2302 pdfcairo necesita Gnuplot 4.3.
2303 @code{pdf} necesita que Gnuplot haya sido compilado con la opción @code{--enable-pdf} y libpdf debe
2304 estar instalado (@url{http://www.pdflib.com/en/download/pdflib-family/pdflib-lite/}).
2310 (%i2) /* screen terminal (default) */
2311 draw2d(explicit(x^2,x,-1,1))$
2312 (%i3) /* png file */
2313 draw2d(terminal = 'png,
2314 explicit(x^2,x,-1,1))$
2315 (%i4) /* jpg file */
2316 draw2d(terminal = 'jpg,
2317 dimensions = [300,300],
2318 explicit(x^2,x,-1,1))$
2319 (%i5) /* eps file */
2320 draw2d(file_name = "myfile",
2321 explicit(x^2,x,-1,1),
2323 (%i6) /* pdf file */
2324 draw2d(file_name = "mypdf",
2325 dimensions = 100*[12.0,8.0],
2326 explicit(x^2,x,-1,1),
2328 (%i7) /* wxwidgets window */
2329 draw2d(explicit(x^2,x,-1,1),
2336 (%i2) draw2d(explicit(x^5,x,-2,2), terminal=[screen, 3])$
2337 (%i3) draw2d(explicit(x^2,x,-2,2), terminal=[screen, 0])$
2340 Un fichero gif animado.
2346 terminal = 'animated_gif,
2347 gr2d(explicit(x^2,x,-1,1)),
2348 gr2d(explicit(x^3,x,-1,1)),
2349 gr2d(explicit(x^4,x,-1,1)));
2350 End of animation sequence
2351 (%o2) [gr2d(explicit), gr2d(explicit), gr2d(explicit)]
2354 La opción @code{delay} sólo se activa en caso de gifs animados; se ignora en
2355 cualquier otro caso.
2357 Salida multipágina en formato eps.
2361 file_name = "parabol",
2362 terminal = multipage_eps,
2363 dimensions = 100*[10,10],
2364 gr2d(explicit(x^2,x,-1,1)),
2365 gr3d(explicit(x^2+y^2,x,-1,1,y,-1,1))) $
2368 Véanse también @code{file_name}, @code{pic_width}, @code{pic_height} y @code{delay}.
2374 @defvr {Opción gráfica} title
2375 Valor por defecto: @code{""} (cadena vacía)
2377 La opción @code{title} almacena una cadena con el
2378 título de la escena. Por defecto, no se escribe
2381 Puesto que ésta es una opción global, su posición dentro de la
2382 descripción de la escena no reviste importancia.
2388 (%i2) draw2d(explicit(exp(u),u,-2,2),
2389 title = "Exponential function")$
2395 @defvr {Opción gráfica} transform
2396 Valor por defecto: @code{none}
2398 Si @code{transform} vale @code{none}, el espacio no sufre transformación
2399 alguna y los objetos gráficos se representan tal cual se definen. Si es
2400 necesario transformar el espacio, se debe asignar una lista a la opción
2401 @code{transform}. En caso de una escena 2D, la lista toma la forma
2402 @code{[f1(x,y), f2(x,y), x, y]}.
2403 En caso de una escena 3D, la lista debe ser de la forma
2404 @code{[f1(x,y,z), f2(x,y,z), f3(x,y,z), x, y, z]}.
2406 Los nombres de las variables definidas en las listas pueden ser diferentes
2407 de aquellas utilizadas en las definiciones de los objetos gráficos.
2418 proportional_axes = 'xy,
2420 triangle([3,2],[7,2],[5,5]),
2422 fill_color = yellow,
2423 transform = [cos(th)*x - sin(th)*y,
2424 sin(th)*x + cos(th)*y, x, y],
2425 triangle([3,2],[7,2],[5,5]) )$
2434 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3),
2435 transform = [x+10,y+10,z+10,x,y,z],
2437 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3) )$
2443 @defvr {Opción gráfica} transparent
2444 Valor por defecto: @code{false}
2446 Cuando @code{transparent} vale @code{false}, las regiones internas de
2447 los polígonos se rellenan de acuerdo con @code{fill_color}.
2449 Esta opción afecta a los siguientes objetos gráficos:
2452 @code{gr2d}: @code{polygon}, @code{rectangle} y @code{ellipse}.
2459 (%i2) draw2d(polygon([[3,2],[7,2],[5,5]]),
2462 polygon([[5,2],[9,2],[7,5]]) )$
2468 @defvr {Opción gráfica} unit_vectors
2469 Valor por defecto: @code{false}
2471 Cuando @code{unit_vectors} vale @code{true}, los vectores se dibujan con módulo unidad.
2472 Esta opción es útil para representar campos vectoriales. Cuando @code{unit_vectors} vale @code{false},
2473 los vectores se dibujan con su longitud original.
2475 Esta opción sólo es relevante para objetos de tipo @code{vector}.
2481 (%i2) draw2d(xrange = [-1,6],
2484 vector([0,0],[5,2]),
2485 unit_vectors = true,
2487 vector([0,3],[5,2]))$
2494 @defvr {Opción gráfica} user_preamble
2495 Valor por defecto: @code{""} (cadena vacía)
2497 Usuarios expertos en Gnuplot pueden hacer uso de esta opción para
2498 afinar el comportamiento de Gnuplot escribiendo código que será
2499 enviado justo antes de la instrucción @code{plot} o @code{splot}.
2501 El valor dado a esta opción debe ser una cadena alfanumérica o
2502 una lista de cadenas (una por línea).
2504 Puesto que ésta es una opción global, su posición dentro de la
2505 descripción de la escena no reviste importancia.
2509 Se le indica a Gnuplot que dibuje los ejes encima de todos los demás objetos,
2513 xaxis =true, xaxis_type=solid,
2514 yaxis =true, yaxis_type=solid,
2515 user_preamble="set grid front",
2516 region(x^2+y^2<1 ,x,-1.5,1.5,y,-1.5,1.5))$
2522 @defvr {Opción gráfica} view
2523 Valor por defecto: @code{[60,30]}
2525 Un par de ángulos, medidos en grados, indicando la dirección del
2526 observador en una escena 3D. El primer ángulo es la rotación
2527 vertical alrededor del eje @var{x}, dentro del intervalo @math{[0, 360]}.
2528 El segundo es la rotación horizontal alrededor del eje @var{z}, dentro
2529 del intervalo @math{[0, 360]}.
2531 Dándole a la opción @code{view} el valor @code{map}, la dirección del
2532 observador se sitúa perpendicularmente al plano-xy.
2534 Puesto que ésta es una opción global, su posición dentro de la
2535 descripción de la escena no reviste importancia.
2541 (%i2) draw3d(view = [170, 50],
2543 explicit(sin(x^2+y^2),x,-2,2,y,-2,2) )$
2544 (%i3) draw3d(view = map,
2546 explicit(sin(x^2+y^2),x,-2,2,y,-2,2) )$
2553 @defvr {Opción gráfica} wired_surface
2554 Valor por defecto: @code{false}
2556 Indica si las superficies en 3D en modo @code{enhanced3d} deben mostrar o no la malla que
2559 Puesto que ésta es una opción global, su posición dentro de la
2560 descripción de la escena no reviste importancia.
2567 enhanced3d = [sin(x),x,y],
2568 wired_surface = true,
2569 explicit(x^2+y^2,x,-1,1,y,-1,1)) $
2577 @defvr {Opción gráfica} x_voxel
2578 Valor por defecto: 10
2580 @code{x_voxel} es el número de voxels en la dirección x a utilizar
2581 por el algoritmo @i{marching cubes} implementado por el objeto
2582 @code{implicit} tridimensional. También se utiliza como opción
2583 del objeto gráfico @code{region}.
2588 @defvr {Opción gráfica} xaxis
2589 Valor por defecto: @code{false}
2591 Si @code{xaxis} vale @code{true}, se dibujará el eje @var{x}.
2593 Puesto que ésta es una opción global, su posición dentro de la
2594 descripción de la escena no reviste importancia.
2600 (%i2) draw2d(explicit(x^3,x,-1,1),
2602 xaxis_color = blue)$
2605 Véanse también @code{xaxis_width}, @code{xaxis_type} y @code{xaxis_color}.
2611 @defvr {Opción gráfica} xaxis_color
2612 Valor por defecto: @code{"black"}
2614 @code{xaxis_color} especifica el color para el eje @var{x}. Véase
2615 @code{color} para ver cómo se definen los colores.
2617 Puesto que ésta es una opción global, su posición dentro de la
2618 descripción de la escena no reviste importancia.
2624 (%i2) draw2d(explicit(x^3,x,-1,1),
2629 Véanse también @code{xaxis}, @code{xaxis_width} y @code{xaxis_type}.
2635 @defvr {Opción gráfica} xaxis_secondary
2636 Valor por defecto: @code{false}
2638 Si @code{xaxis_secondary} vale @code{true}, los valores de las funciones se pueden representar
2639 respecto del eje @var{x} secundario, el cual se dibuja en la parte superior de la escena.
2641 Nótese que esta es una opción gráfica local que sólo afecta a objetos 2d.
2648 key = "Bottom x-axis",
2649 explicit(x+1,x,1,2),
2651 key = "Above x-axis",
2652 xtics_secondary = true,
2653 xaxis_secondary = true,
2654 explicit(x^2,x,-1,1)) $
2657 Véanse también @code{xrange_secondary}, @code{xtics_secondary}, @code{xtics_rotate_secondary},
2658 @code{xtics_axis_secondary} y @code{xaxis_secondary}.
2665 @defvr {Opción gráfica} xaxis_type
2666 Valor por defecto: @code{dots}
2668 @code{xaxis_type} indica cómo se debe dibujar el eje @var{x};
2669 valores admisibles son @code{solid} y @code{dots}.
2671 Puesto que ésta es una opción global, su posición dentro de la
2672 descripción de la escena no reviste importancia.
2678 (%i2) draw2d(explicit(x^3,x,-1,1),
2680 xaxis_type = solid)$
2683 Véanse también @code{xaxis}, @code{xaxis_width} y @code{xaxis_color}.
2689 @defvr {Opción gráfica} xaxis_width
2690 Valor por defecto: 1
2692 @code{xaxis_width} es el ancho del eje @var{x}.
2693 Su valor debe ser un número positivo.
2695 Puesto que ésta es una opción global, su posición dentro de la
2696 descripción de la escena no reviste importancia.
2702 (%i2) draw2d(explicit(x^3,x,-1,1),
2707 Véanse también @code{xaxis}, @code{xaxis_type} y @code{xaxis_color}.
2713 @defvr {Opción gráfica} xlabel
2714 Valor por defecto: @code{""}
2716 La opción @code{xlabel} almacena una cadena con la
2717 etiqueta del eje @var{x}. Por defecto, el eje tiene etiqueta @code{"x"}.
2719 Puesto que ésta es una opción global, su posición dentro de la
2720 descripción de la escena no reviste importancia.
2726 (%i2) draw2d(xlabel = "Time",
2727 explicit(exp(u),u,-2,2),
2728 ylabel = "Population")$
2731 Véanse también @code{xlabel_secondary}, @code{ylabel}, @code{ylabel_secondary} y @code{zlabel}.
2736 @defvr {Opción gráfica} xlabel_secondary
2737 Valor por defecto: @code{""} (cadena vacía)
2739 La opción @code{xlabel_secondary} almacena una cadena con la
2740 etiqueta del eje @var{x} secundario. Por defecto, el eje no tiene etiqueta.
2742 Puesto que ésta es una opción global, su posición dentro de la
2743 descripción de la escena no reviste importancia.
2750 xaxis_secondary=true,yaxis_secondary=true,
2751 xtics_secondary=true,ytics_secondary=true,
2752 xlabel_secondary="t[s]",
2753 ylabel_secondary="U[V]",
2754 explicit(sin(t),t,0,10) )$
2757 Véanse también @code{xlabel}, @code{ylabel}, @code{ylabel_secondary} y @code{zlabel}.
2763 @defvr {Opción gráfica} xrange
2764 Valor por defecto: @code{auto}
2766 Cuando @code{xrange} vale @code{auto}, el rango de la coordenada @var{x}
2767 se calcula de forma automática.
2769 Si el usuario quiere especificar un intervalo para @var{x}, éste debe
2770 expresarse como una lista de Maxima, como en @code{xrange=[-2, 3]}.
2772 Puesto que ésta es una opción global, su posición dentro de la
2773 descripción de la escena no reviste importancia.
2779 (%i2) draw2d(xrange = [-3,5],
2780 explicit(x^2,x,-1,1))$
2783 Véanse también @code{yrange} y @code{zrange}.
2789 @defvr {Opción gráfica} xrange_secondary
2790 Valor por defecto: @code{auto}
2792 Cuando @code{xrange_secondary} vale @code{auto}, el rango del eje @var{x}
2793 secundario se calcula de forma automática.
2795 Si el usuario quiere especificar un intervalo para el eje @var{x} secundario, éste debe
2796 expresarse como una lista de Maxima, como en @code{xrange_secondary=[-2, 3]}.
2798 Puesto que ésta es una opción global, su posición dentro de la
2799 descripción de la escena no reviste importancia.
2801 Véanse también @code{xrange}, @code{yrange}, @code{zrange} y @code{yrange_secondary}.
2807 @defvr {Opción gráfica} xtics
2808 Valor por defecto: @code{true}
2810 Esta opción gráfica controla la forma en la que se dibujarán las marcas
2815 Cuando a @code{xtics} se le da el valor @var{true}, las marcas se dibujarán de
2819 Cuando a @code{xtics} se le da el valor @var{false}, no habrá marcas en los ejes.
2822 Cuando a @code{xtics} se le da un valor numérico positivo, se interpretará como la
2823 distancia entre dos marcas consecutivas.
2826 Cuando a @code{xtics} se le da una lista de longitud tres de la forma
2827 @code{[start,incr,end]}, las marcas se dibujarán desde @code{start}
2828 hasta @code{end} a intervalos de longitud @code{incr}.
2831 Cuando a @code{xtics} se le da un conjunto de números de la forma
2832 @code{@{n1, n2, ...@}}, las marcas se dibujarán exactamente en los valores
2833 @code{n1}, @code{n2}, ...
2836 Cuando a @code{xtics} se le da un conjunto de pares de la forma
2837 @code{@{["label1", n1], ["label2", n2], ...@}}, las marcas correspondientes a los valores
2838 @code{n1}, @code{n2}, ... se etiquetarán con @code{"label1"}, @code{"label2"}, ..., respectivamente.
2841 Puesto que ésta es una opción global, su posición dentro de la
2842 descripción de la escena no reviste importancia.
2846 Marcas desactivadas.
2849 (%i2) draw2d(xtics = 'false,
2850 explicit(x^3,x,-1,1) )$
2853 Marcas cada 1/4 unidades.
2856 (%i2) draw2d(xtics = 1/4,
2857 explicit(x^3,x,-1,1) )$
2860 Marcas desde -3/4 hasta 3/4 en saltos de 1/8.
2863 (%i2) draw2d(xtics = [-3/4,1/8,3/4],
2864 explicit(x^3,x,-1,1) )$
2867 Marcas en los puntos -1/2, -1/4 y 3/4.
2870 (%i2) draw2d(xtics = @{-1/2,-1/4,3/4@},
2871 explicit(x^3,x,-1,1) )$
2877 (%i2) draw2d(xtics = @{["High",0.75],["Medium",0],["Low",-0.75]@},
2878 explicit(x^3,x,-1,1) )$
2885 @defvr {Opción gráfica} xtics_axis
2886 Valor por defecto: @code{false}
2888 Si @code{xtics_axis} vale @code{true}, las marcas y sus etiquetas se dibujan sobre
2889 el propio eje @var{x}, si vale @code{false} las marcas se colocan a lo largo del borde
2892 Puesto que ésta es una opción global, su posición dentro de la
2893 descripción de la escena no reviste importancia.
2898 @defvr {Opción gráfica} xtics_rotate
2899 Valor por defecto: @code{false}
2901 Si @code{xtics_rotate} vale @code{true}, las marcas del eje @var{x} se giran
2904 Puesto que ésta es una opción global, su posición dentro de la
2905 descripción de la escena no reviste importancia.
2910 @defvr {Opción gráfica} xtics_rotate_secondary
2911 Valor por defecto: @code{false}
2913 Si @code{xtics_rotate_secondary} vale @code{true}, las marcas del eje @var{x}
2914 secundario se giran 90 grados.
2916 Puesto que ésta es una opción global, su posición dentro de la
2917 descripción de la escena no reviste importancia.
2922 @defvr {Opción gráfica} xtics_secondary
2923 Valor por defecto: @code{auto}
2925 Esta opción gráfica controla la forma en la que se dibujarán las marcas
2926 del eje @var{x} secundario.
2928 Véase @code{xtics} para una descripción completa.
2933 @defvr {Opción gráfica} xtics_secondary_axis
2934 Valor por defecto: @code{false}
2936 Si @code{xtics_secondary_axis} vale @code{true}, las marcas y sus etiquetas se dibujan sobre
2937 el propio eje @var{x} secundario, si vale @code{false} las marcas se colocan a lo largo del borde
2940 Puesto que ésta es una opción global, su posición dentro de la
2941 descripción de la escena no reviste importancia.
2946 @defvr {Opción gráfica} xu_grid
2947 Valor por defecto: 30
2949 @code{xu_grid} es el número de coordenadas de la primera variable
2950 (@code{x} en superficies explcítas y @code{u} en las
2951 paramétricas) para formar la rejilla de puntos muestrales.
2953 Esta opción afecta a los siguientes objetos gráficos:
2956 @code{gr3d}: @code{explicit} y @code{parametric_surface}.
2963 (%i2) draw3d(xu_grid = 10,
2965 explicit(x^2+y^2,x,-3,3,y,-3,3) )$
2968 Véase también @code{yv_grid}.
2974 @defvr {Opción gráfica} xy_file
2975 Valor por defecto: @code{""} (cadena vacía)
2977 @code{xy_file} es el nombre del fichero donde se almacenarán las
2978 coordenadas después de hacer clic con el botón del ratón en un
2979 punto de la imagen y pulsado la tecla 'x'. Por defecto, las
2980 coordenadas no se almacenan.
2982 Puesto que ésta es una opción global, su posición dentro de la
2983 descripción de la escena no reviste importancia.
2989 @defvr {Graphic option} xyplane
2990 Valor por defecto: @code{false}
2992 Coloca el plano-xy en escenas 3D. Si @code{xyplane} vale @code{false},
2993 el plano-xy se coloca automáticamente; en cambio, si toma un
2994 valor real, el plano-xy intersectará con el eje @var{z} a ese nivel.
2995 Esta opción no tiene efecto alguno en escenas 2D.
2997 Puesto que ésta es una opción global, su posición dentro de la
2998 descripción de la escena no reviste importancia.
3004 (%i2) draw3d(xyplane = %e-2,
3005 explicit(x^2+y^2,x,-1,1,y,-1,1))$
3012 @defvr {Opción gráfica} y_voxel
3013 Valor por defecto: 10
3015 @code{y_voxel} es el número de voxels en la dirección y a utilizar
3016 por el algoritmo @i{marching cubes} implementado por el objeto
3017 @code{implicit} tridimensional. También se utiliza como opción
3018 del objeto gráfico @code{region}.
3024 @defvr {Opción gráfica} yaxis
3025 Valor por defecto: @code{false}
3027 Si @code{yaxis} vale @code{true}, se dibujará el eje @var{y}.
3029 Puesto que ésta es una opción global, su posición dentro de la
3030 descripción de la escena no reviste importancia.
3036 (%i2) draw2d(explicit(x^3,x,-1,1),
3038 yaxis_color = blue)$
3041 Véanse también @code{yaxis_width}, @code{yaxis_type} y @code{yaxis_color}.
3046 @defvr {Opción gráfica} yaxis_color
3047 Valor por defecto: @code{"black"}
3049 @code{yaxis_color} especifica el color para el eje @var{y}. Véase
3050 @code{color} para ver cómo se definen los colores.
3052 Puesto que ésta es una opción global, su posición dentro de la
3053 descripción de la escena no reviste importancia.
3059 (%i2) draw2d(explicit(x^3,x,-1,1),
3064 Véanse también @code{yaxis}, @code{yaxis_width} y @code{yaxis_type}.
3070 @defvr {Opción gráfica} yaxis_secondary
3071 Valor por defecto: @code{false}
3073 Si @code{yaxis_secondary} vale @code{true}, los valores de las funciones se pueden representar
3074 respecto del eje @var{y} secundario, el cual se dibuja al lado derecho de la escena.
3076 Nótese que esta es una opción gráfica local que sólo afecta a objetos 2d.
3083 explicit(sin(x),x,0,10),
3084 yaxis_secondary = true,
3085 ytics_secondary = true,
3087 explicit(100*sin(x+0.1)+2,x,0,10));
3090 Véanse también @code{yrange_secondary}, @code{ytics_secondary}, @code{ytics_rotate_secondary}
3091 y @code{ytics_axis_secondary}.
3098 @defvr {Opción gráfica} yaxis_type
3099 Valor por defecto: @code{dots}
3101 @code{yaxis_type} indica cómo se debe dibujar el eje @var{y};
3102 valores admisibles son @code{solid} y @code{dots}.
3104 Puesto que ésta es una opción global, su posición dentro de la
3105 descripción de la escena no reviste importancia.
3111 (%i2) draw2d(explicit(x^3,x,-1,1),
3113 yaxis_type = solid)$
3116 Véanse también @code{yaxis}, @code{yaxis_width} y @code{yaxis_color}.
3122 @defvr {Opción gráfica} yaxis_width
3123 Valor por defecto: 1
3125 @code{yaxis_width} es el ancho del eje @var{y}.
3126 Su valor debe ser un número positivo.
3128 Puesto que ésta es una opción global, su posición dentro de la
3129 descripción de la escena no reviste importancia.
3135 (%i2) draw2d(explicit(x^3,x,-1,1),
3140 Véanse también @code{yaxis}, @code{yaxis_type} y @code{yaxis_color}.
3146 @defvr {Opción gráfica} ylabel
3147 Valor por defecto: @code{""}
3149 La opción @code{ylabel} almacena una cadena con la
3150 etiqueta del eje @var{y}. Por defecto, el eje tiene etiqueta @code{"y"}.
3152 Puesto que ésta es una opción global, su posición dentro de la
3153 descripción de la escena no reviste importancia.
3159 (%i2) draw2d(xlabel = "Time",
3160 ylabel = "Population",
3161 explicit(exp(u),u,-2,2) )$
3164 Véanse también @code{xlabel}, @code{xlabel_secondary}, @code{ylabel_secondary} y @code{zlabel}.
3173 @defvr {Opción gráfica} ylabel_secondary
3174 Valor por defecto: @code{""} (cadena vacía)
3177 La opción @code{ylabel_secondary} almacena una cadena con la
3178 etiqueta del eje @var{y} secundario. Por defecto, el eje no tiene etiqueta.
3180 Puesto que ésta es una opción global, su posición dentro de la
3181 descripción de la escena no reviste importancia.
3190 ylabel="I[A]",ylabel_secondary="P[W]",
3191 explicit(sin(t),t,0,10),
3192 yaxis_secondary=true,
3193 ytics_secondary=true,
3194 color=red,key="Power",
3195 explicit((sin(t))^2,t,0,10)
3199 Véanse también @code{xlabel}, @code{xlabel_secondary}, @code{ylabel} and @code{zlabel}.
3205 @defvr {Opción gráfica} yrange
3206 Valor por defecto: @code{auto}
3208 Cuando @code{yrange} vale @code{auto}, el rango de la coordenada @var{y}
3209 se calcula de forma automática.
3211 Si el usuario quiere especificar un intervalo para @var{y}, éste debe
3212 expresarse como una lista de Maxima, como en @code{yrange=[-2, 3]}.
3214 Puesto que ésta es una opción global, su posición dentro de la
3215 descripción de la escena no reviste importancia.
3221 (%i2) draw2d(yrange = [-2,3],
3222 explicit(x^2,x,-1,1),
3226 Véanse también @code{xrange} y @code{zrange}.
3231 @defvr {Opción gráfica} yrange_secondary
3232 Valor por defecto: @code{auto}
3234 Cuando @code{yrange_secondary} vale @code{auto}, el rango del eje @var{y}
3235 secundario se calcula de forma automática.
3237 Si el usuario quiere especificar un intervalo para el eje @var{y} secundario, éste debe
3238 expresarse como una lista de Maxima, como en @code{yrange_secondary=[-2, 3]}.
3240 Puesto que ésta es una opción global, su posición dentro de la
3241 descripción de la escena no reviste importancia.
3248 explicit(sin(x),x,0,10),
3249 yaxis_secondary = true,
3250 ytics_secondary = true,
3252 yrange_secondary = [-20, 20],
3254 explicit(100*sin(x+0.1)+2,x,0,10)) $
3257 Véanse también @code{xrange}, @code{yrange} y @code{zrange}.
3263 @defvr {Opción gráfica} ytics
3264 Valor por defecto: @code{true}
3266 Esta opción gráfica controla la forma en la que se dibujarán las marcas
3269 Véase @code{xtics} para una descripción completa.
3275 @defvr {Opción gráfica} ytics_axis
3276 Valor por defecto: @code{false}
3278 Si @code{ytics_axis} vale @code{true}, las marcas y sus etiquetas se dibujan sobre
3279 el propio eje @var{y}, si vale @code{false} las marcas se colocan a lo largo del borde
3282 Puesto que ésta es una opción global, su posición dentro de la
3283 descripción de la escena no reviste importancia.
3289 @defvr {Opción gráfica} ytics_rotate
3290 Valor por defecto: @code{false}
3292 Si @code{ytics_rotate} vale @code{true}, las marcas del eje @var{y} se giran
3295 Puesto que ésta es una opción global, su posición dentro de la
3296 descripción de la escena no reviste importancia.
3302 @defvr {Opción gráfica} ytics_rotate_secondary
3303 Valor por defecto: @code{false}
3305 Si @code{ytics_rotate_secondary} vale @code{true}, las marcas del eje @var{y}
3306 secundario se giran 90 grados.
3308 Puesto que ésta es una opción global, su posición dentro de la
3309 descripción de la escena no reviste importancia.
3315 @defvr {Opción gráfica} ytics_secondary
3316 Valor por defecto: @code{auto}
3318 Esta opción gráfica controla la forma en la que se dibujarán las marcas
3319 del eje @var{y} secundario.
3321 Véase @code{xtics} para una descripción completa.
3327 @defvr {Opción gráfica} ytics_secondary_axis
3328 Valor por defecto: @code{false}
3330 Si @code{ytics_secondary_axis} vale @code{true}, las marcas y sus etiquetas se dibujan sobre
3331 el propio eje @var{y} secundario, si vale @code{false} las marcas se colocan a lo largo del borde
3334 Puesto que ésta es una opción global, su posición dentro de la
3335 descripción de la escena no reviste importancia.
3341 @defvr {Opción gráfica} yv_grid
3342 Valor por defecto: 30
3344 @code{yv_grid} es el número de coordenadas de la segunda variable
3345 (@code{y} en superficies explcítas y @code{v} en las
3346 paramétricas) para formar la rejilla de puntos muestrales.
3348 Esta opción afecta a los siguientes objetos gráficos:
3351 @code{gr3d}: @code{explicit} y @code{parametric_surface}.
3358 (%i2) draw3d(xu_grid = 10,
3360 explicit(x^2+y^2,x,-3,3,y,-3,3) )$
3363 Véase también @code{xu_grid}.
3369 @defvr {Opción gráfica} z_voxel
3370 Valor por defecto: 10
3372 @code{z_voxel} es el número de voxels en la dirección z a utilizar
3373 por el algoritmo @i{marching cubes} implementado por el objeto
3374 @code{implicit} tridimensional.
3380 @defvr {Opción gráfica} zaxis
3381 Valor por defecto: @code{false}
3383 Si @code{zaxis} vale @code{true}, se dibujará el eje @var{z} en
3384 escenas 3D. Esta opción no tiene efecto alguno en escenas 2D.
3386 Puesto que ésta es una opción global, su posición dentro de la
3387 descripción de la escena no reviste importancia.
3393 (%i2) draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1),
3396 zaxis_color = blue)$
3399 Véanse también @code{zaxis_width}, @code{zaxis_type} y @code{zaxis_color}.
3406 @defvr {Opción gráfica} zaxis_color
3407 Valor por defecto: @code{"black"}
3409 @code{zaxis_color} especifica el color para el eje @var{z}. Véase
3410 @code{color} para ver cómo se definen los colores.
3411 Esta opción no tiene efecto alguno en escenas 2D.
3413 Puesto que ésta es una opción global, su posición dentro de la
3414 descripción de la escena no reviste importancia.
3420 (%i2) draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1),
3426 Véanse también @code{zaxis}, @code{zaxis_width} y @code{zaxis_type}.
3432 @defvr {Opción gráfica} zaxis_type
3433 Valor por defecto: @code{dots}
3435 @code{zaxis_type} indica cómo se debe dibujar el eje @var{z};
3436 valores admisibles son @code{solid} y @code{dots}.
3437 Esta opción no tiene efecto alguno en escenas 2D.
3439 Puesto que ésta es una opción global, su posición dentro de la
3440 descripción de la escena no reviste importancia.
3446 (%i2) draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1),
3448 zaxis_type = solid)$
3451 Véanse también @code{zaxis}, @code{zaxis_width} y @code{zaxis_color}.
3458 @defvr {Opción gráfica} zaxis_width
3459 Valor por defecto: 1
3461 @code{zaxis_width} es el ancho del eje @var{z}.
3462 Su valor debe ser un número positivo. Esta opción no tiene efecto alguno en escenas 2D.
3464 Puesto que ésta es una opción global, su posición dentro de la
3465 descripción de la escena no reviste importancia.
3471 (%i2) draw3d(explicit(x^2+y^2,x,-1,1,y,-1,1),
3477 Véanse también @code{zaxis}, @code{zaxis_type} y @code{zaxis_color}.
3484 @defvr {Opción gráfica} zlabel
3485 Valor por defecto: @code{""}
3487 La opción @code{zlabel} almacena una cadena con la
3488 etiqueta del eje @var{z}. Por defecto, el eje tiene etiqueta @code{"z"}.
3490 Puesto que ésta es una opción global, su posición dentro de la
3491 descripción de la escena no reviste importancia.
3497 (%i2) draw3d(zlabel = "Z variable",
3498 ylabel = "Y variable",
3499 explicit(sin(x^2+y^2),x,-2,2,y,-2,2),
3500 xlabel = "X variable" )$
3503 Véanse también @code{xlabel} y @code{ylabel}.
3510 @defvr {Opción gráfica} zrange
3511 Valor por defecto: @code{auto}
3513 Cuando @code{zrange} vale @code{auto}, el rango de la coordenada @var{z}
3514 se calcula de forma automática.
3516 Si el usuario quiere especificar un intervalo para @var{z}, éste debe
3517 expresarse como una lista de Maxima, como en @code{zrange=[-2, 3]}.
3519 Puesto que ésta es una opción global, su posición dentro de la
3520 descripción de la escena no reviste importancia.
3526 (%i2) draw3d(yrange = [-3,3],
3528 explicit(x^2+y^2,x,-1,1,y,-1,1),
3532 Véanse también @code{xrange} y @code{yrange}.
3538 @defvr {Opción gráfica} ztics
3539 Valor por defecto: @code{true}
3541 Esta opción gráfica controla la forma en la que se dibujarán las marcas
3544 Véase @code{xtics} para una descripción completa.
3551 @defvr {Opción gráfica} ztics_axis
3552 Valor por defecto: @code{false}
3554 Si @code{ztics_axis} vale @code{true}, las marcas y sus etiquetas se dibujan sobre
3555 el propio eje @var{z}, si vale @code{false} las marcas se colocan a lo largo del borde
3558 Puesto que ésta es una opción global, su posición dentro de la
3559 descripción de la escena no reviste importancia.
3566 @defvr {Opción gráfica} ztics_rotate
3567 Valor por defecto: @code{false}
3569 Si @code{ztics_rotate} vale @code{true}, las marcas del eje @var{z} se giran
3572 Puesto que ésta es una opción global, su posición dentro de la
3573 descripción de la escena no reviste importancia.
3579 @subsection Objetos gráficos
3583 @deffn {Objeto gráfico} bars ([@var{x1},@var{h1},@var{w1}], [@var{x2},@var{h2},@var{w2}, ...])
3584 Dibuja barras verticales en 2D.
3588 @code{bars ([@var{x1},@var{h1},@var{w1}], [@var{x2},@var{h2},@var{w2}, ...])}
3589 dibuja barras centradas en los valores @var{x1}, @var{x2}, ... de alturas @var{h1}, @var{h2}, ...
3590 y anchos @var{w1}, @var{w2}, ...
3592 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{key},
3593 @code{fill_color}, @code{fill_density} y @code{line_width}.
3603 bars([0.8,5,0.4],[1.8,7,0.4],[2.8,-4,0.4]),
3608 bars([1.2,4,0.4],[2.2,-2,0.4],[3.2,5,0.4]),
3618 @deffn {Objeto gráfico} cylindrical (@var{radius},@var{z},@var{minz},@var{maxz},@var{azi},@var{minazi},@var{maxazi})
3619 Dibuja funciones 3D definidas en coordenadas cilíndricas.
3623 @code{cylindrical (@var{radius},@var{z},@var{minz},@var{maxz},@var{azi},@var{minazi},@var{maxazi})}
3624 dibuja la función @code{@var{radius}(@var{z},@var{azi})} definida en coordenadas cilíndricas, con la variable
3625 @var{z} tomando valores desde @var{minz} hasta @var{maxz} y el @i{azimut} @var{azi} tomando valores desde
3626 @var{minazi} hasta @var{maxazi}.
3628 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{xu_grid},
3629 @code{yv_grid}, @code{line_type}, @code{key}, @code{wired_surface}, @code{enhanced3d} y @code{color}.
3635 (%i2) draw3d(cylindrical(1,z,-2,2,az,0,2*%pi))$
3642 @deffn {Objeto gráfico} elevation_grid (@var{mat},@var{x0},@var{y0},@var{width},@var{height})
3643 Dibuja la matriz @var{mat} en 3D. Los valores @var{z} se toman de @var{mat},
3644 las abscisas van desde @var{x0} hasta @math{@var{x0} + @var{width}}
3645 y las ordenadas desde @var{y0} hasta @math{@var{y0} + @var{height}}. El elemento @math{a(1,1)}
3646 se proyecta sobre el punto @math{(x0,y0+height)}, @math{a(1,n)} sobre @math{(x0+width,y0+height)},
3647 @math{a(m,1)} sobre @math{(x0,y0)} y @math{a(m,n)} sobre @math{(x0+width,y0)}.
3649 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{line_type},
3650 @code{line_width}, @code{key}, @code{wired_surface}, @code{enhanced3d} y @code{color}.
3652 En versiones antiguas de Maxima, @code{elevation_grid} se llamaba @code{mesh}.
3653 Véase también @code{mesh}.
3661 makelist(makelist(random(10.0),k,1,30),i,1,20)) $
3664 elevation_grid(m,0,0,3,2),
3667 surface_hide = true);
3676 @deffn {Objeto gráfico} ellipse (@var{xc}, @var{yc}, @var{a}, @var{b}, @var{ang1}, @var{ang2})
3677 Dibuja elipses y círculos en 2D.
3682 @code{ellipse (@var{xc}, @var{yc}, @var{a}, @var{b}, @var{ang1}, @var{ang2})}
3683 dibuja una elipse de centro @code{[@var{xc}, @var{yc}]} con semiejes horizontal y vertical
3684 @var{a} y @var{b}, respectivamente, comenzando en el ángulo @var{ang1} y trazando un arco
3685 de amplitud igual al ángulo @var{ang2}.
3687 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{nticks},
3688 @code{transparent}, @code{fill_color}, @code{border}, @code{line_width},
3689 @code{line_type}, @code{key} y @code{color}.
3695 (%i2) draw2d(transparent = false,
3698 transparent = false,
3700 ellipse(0,6,3,2,270,-270),
3701 /* center (x,y), a, b, start & end in degrees */
3705 ellipse(2.5,6,2,3,30,-90),
3713 @deffn {Objeto gráfico} errors ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...])
3714 Dibuja puntos con barras de error asociadas horizontales, verticales o de
3715 ambos tipos, según sea el valor de la opción @code{error_type}.
3719 Si @code{error_type=x}, los argumentos a @code{errors} deben ser de la forma
3720 @code{[x,y,xdelta]} o @code{[x,y,xlow,xhigh]}. Si @code{error_type=y},
3721 los argumentos deben ser del tipo @code{[x,y,ydelta]} o @code{[x,y,ylow,yhigh]}.
3722 Si @code{error_type=xy} o @code{error_type=boxes}, los argumentos deben ser de la
3723 forma @code{[x,y,xdelta,ydelta]} o @code{[x,y,xlow,xhigh,ylow,yhigh]}.
3725 Véase también @code{error_type}.
3727 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{error_type},
3728 @code{points_joined}, @code{line_width}, @code{key}, @code{line_type},
3729 @code{color}, @code{fill_density}, @code{xaxis_secondary} y @code{yaxis_secondary}.
3731 La opción @code{fill_density} solo es relevante cuando @code{error_type=boxes}.
3735 Barras de error horizontales.
3741 errors([[1,2,1], [3,5,3], [10,3,1], [17,6,2]]))$
3744 Barras de error horizontales y verticales.
3750 points_joined = true,
3752 errors([[1,2,1,2], [3,5,2,1], [10,3,1,1], [17,6,1/2,2]]));
3759 @deffn {Objeto gráfico} explicit (@var{fcn},@var{var},@var{minval},@var{maxval})
3760 @deffnx {Objeto gráfico} explicit (@var{fcn},@var{var1},@var{minval1},@var{maxval1},@var{var2},@var{minval2},@var{maxval2})
3761 Dibuja funciones explícitas en 2D y 3D.
3765 @code{explicit (@var{fcn},@var{var},@var{minval},@var{maxval})} dibuja la función explícita @var{fcn},
3766 con la variable @var{var} tomando valores desde @var{minval} hasta @var{maxval}.
3768 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{nticks},
3769 @code{adapt_depth}, @code{draw_realpart}, @code{line_width}, @code{line_type}, @code{key},
3770 @code{filled_func}, @code{fill_color} y @code{color}.
3776 (%i2) draw2d(line_width = 3,
3778 explicit(x^2,x,-3,3) )$
3779 (%i3) draw2d(fill_color = brown,
3781 explicit(x^2,x,-3,3) )$
3786 @code{explicit (@var{fcn},@var{var1},@var{minval1},@var{maxval1},@var{var2},@var{minval2},@var{maxval2})}
3787 dibuja la función explícita @var{fcn}, con la variable
3788 @code{var1} tomando valores desde @var{minval1} hasta @var{maxval1} y
3789 la variable @var{var2} tomando valores desde @var{minval2} hasta @var{maxval2}.
3791 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{draw_realpart}, @code{xu_grid},
3792 @code{yv_grid}, @code{line_type}, @code{line_width}, @code{key}, @code{wired_surface}, @code{enhanced3d}
3799 (%i2) draw3d(key = "Gauss",
3801 explicit(20*exp(-x^2-y^2)-10,x,-3,3,y,-3,3),
3805 explicit(x+y,x,-5,5,y,-5,5),
3806 surface_hide = true)$
3809 Véase también @code{filled_func} para el relleno de curvas.
3815 @deffn {Objeto gráfico} image (@var{im},@var{x0},@var{y0},@var{width},@var{height})
3816 Reproduce una imagen en 2D.
3820 @code{image (@var{im},@var{x0},@var{y0},@var{width},@var{height})}:
3821 dibuja la imagen @var{im} en la región rectangular desde el vértice @code{(@var{x0},@var{y0})}
3822 hasta el @code{(x0+@var{width},y0+@var{height})} del plano real. El argumento @var{im} debe ser una
3823 matriz de números reales, una matriz de vectores de longitud tres o un objeto
3824 de tipo @code{picture}.
3826 Si @var{im} es una matriz de números reales, los valores de los
3827 píxeles se interpretan según indique la opción
3828 gráfica @code{palette}, que es un vector de longitud tres con sus componentes tomando
3829 valores enteros en el rango desde -36 a +36; cada valor es un
3830 índice para seleccionar una fórmula que transforma los niveles
3831 numéricos en las componentes cromáticas rojo, verde y azul:
3835 6: x^4 7: sqrt(x) 8: sqrt(sqrt(x))
3836 9: sin(90x) 10: cos(90x) 11: |x-0.5|
3837 12: (2x-1)^2 13: sin(180x) 14: |cos(180x)|
3838 15: sin(360x) 16: cos(360x) 17: |sin(360x)|
3839 18: |cos(360x)| 19: |sin(720x)| 20: |cos(720x)|
3840 21: 3x 22: 3x-1 23: 3x-2
3841 24: |3x-1| 25: |3x-2| 26: (3x-1)/2
3842 27: (3x-2)/2 28: |(3x-1)/2| 29: |(3x-2)/2|
3843 30: x/0.32-0.78125 31: 2*x-0.84
3844 32: 4x;1;-2x+1.84;x/0.08-11.5
3845 33: |2*x - 0.5| 34: 2*x 35: 2*x - 0.5
3848 los números negativos se interpretan como colores invertidos
3849 de las componentes cromáticas.
3851 @code{palette = gray} y @code{palette = color} son atajos para
3852 @code{palette = [3,3,3]} y @code{palette = [7,5,15]}, respectivamente.
3854 Si @var{im} es una matriz de vectores de longitud tres, éstos se
3855 interpretarán como las componentes cromáticas rojo, verde y azul.
3859 Si @var{im} es una matriz de números reales, los valores de los
3860 píxeles se interpretan según indique la opción
3861 gráfica @code{palette}.
3866 makelist(makelist(random(200),i,1,30),i,1,30))$
3867 (%i3) /* palette = color, default */
3868 draw2d(image(im,0,0,30,30))$
3869 (%i4) draw2d(palette = gray, image(im,0,0,30,30))$
3870 (%i5) draw2d(palette = [15,20,-4],
3872 image(im,0,0,30,30))$
3875 Véase también @code{colorbox}.
3877 Si @var{im} es una matriz de vectores de longitud tres, éstos se
3878 interpretarán como las componentes cromáticas rojo, verde y azul.
3884 makelist([random(300),
3886 random(300)],i,1,30),i,1,30))$
3887 (%i3) draw2d(image(im,0,0,30,30))$
3890 El paquete @code{draw} carga automáticamente el paquete @code{picture}.
3891 En este ejemplo, una imagen de niveles se define a mano, reproduciéndola
3895 (%i2) im: make_level_picture([45,87,2,134,204,16],3,2);
3896 (%o2) picture(level, 3, 2, @{Array: #(45 87 2 134 204 16)@})
3897 (%i3) /* default color palette */
3898 draw2d(image(im,0,0,30,30))$
3899 (%i4) /* gray palette */
3900 draw2d(palette = gray,
3901 image(im,0,0,30,30))$
3904 Se lee un fichero xpm y se reproduce.
3907 (%i2) im: read_xpm("myfile.xpm")$
3908 (%i3) draw2d(image(im,0,0,10,7))$
3911 Véanse también @code{make_level_picture}, @code{make_rgb_picture} y @code{read_xpm}.
3913 En @url{http://www.telefonica.net/web2/biomates/maxima/gpdraw/image}
3914 se encuentran ejemplos más elaborados.
3921 @deffn {Objeto gráfico} implicit (@var{fcn},@var{x},@var{xmin},@var{xmax},@var{y},@var{ymin},@var{ymax})
3922 @deffnx {Objeto gráfico} implicit (@var{fcn},@var{x},@var{xmin},@var{xmax},@var{y},@var{ymin},@var{ymax},@var{z},@var{zmin},@var{zmax})
3923 Dibuja funciones implícitas en 2D y 3D.
3927 @code{implicit (@var{fcn},@var{x},@var{xmin},@var{xmax},@var{y},@var{ymin},@var{ymax})}
3928 dibuja la función implícita @var{fcn}, con la variable
3929 @code{x} tomando valores desde @var{xmin} hasta @var{xmax},
3930 y la variable @var{y} tomando valores desde @var{ymin} hasta @var{ymax}.
3932 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{ip_grid},
3933 @code{ip_grid_in}, @code{line_width}, @code{line_type}, @code{key} y @code{color}.
3939 (%i2) draw2d(terminal = eps,
3942 key = "y^2=x^3-2*x+1",
3943 implicit(y^2=x^3-2*x+1, x, -4,4, y, -4,4),
3945 key = "x^3+y^3 = 3*x*y^2-x-1",
3946 implicit(x^3+y^3 = 3*x*y^2-x-1, x,-4,4, y,-4,4),
3947 title = "Two implicit functions" )$
3952 @code{implicit (@var{fcn},@var{x},@var{xmin},@var{xmax}, @var{y},@var{ymin},@var{ymax}, @var{z},@var{zmin},@var{zmax})}
3953 dibuja la función implícita @var{fcn}, con la variable @var{x}
3954 tomando valores desde @var{xmin} hasta @var{xmax}, la variable @var{y} tomando
3955 valores desde @var{ymin} hasta @var{ymax} y la variable @var{z} tomando
3956 valores desde @var{zmin} hasta @var{zmax}. Este objeto está programado con el
3957 algoritmo @i{marching cubes}.
3959 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{x_voxel},
3960 @code{y_voxel}, @code{z_voxel}, @code{line_width}, @code{line_type}, @code{key},
3961 @code{wired_surface}, @code{enhanced3d} y @code{color}.
3969 implicit((x^2+y^2+z^2-1)*(x^2+(y-1.5)^2+z^2-0.5)=0.015,
3970 x,-1,1,y,-1.2,2.3,z,-1,1),
3979 @deffn {Objeto gráfico} label ([@var{string},@var{x},@var{y}],...)
3980 @deffnx {Objeto gráfico} label ([@var{string},@var{x},@var{y},@var{z}],...)
3981 Escribe etiquetas en 2D y 3D.
3983 Las etiquetas coloreadas sólo trabajan con Gnuplot 4.3. Este es un fallo conocido del
3984 paquete @code{draw}.
3986 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{label_alignment},
3987 @code{label_orientation} y @code{color}.
3991 @code{label([@var{string},@var{x},@var{y}])} escribe la cadena de caracteres @var{string}
3992 en el punto @code{[@var{x},@var{y}]}.
3998 (%i2) draw2d(yrange = [0.1,1.4],
4000 label(["Label in red",0,0.3]),
4002 label(["Label in blue",0,0.6]),
4004 label(["Label in light-blue",0,0.9],
4005 ["Another light-blue",0,1.2]) )$
4010 @code{label([@var{string},@var{x},@var{y},@var{z}])} escribe la cadena de caracteres @var{string}
4011 en el punto @code{[@var{x},@var{y},@var{z}]}.
4017 (%i2) draw3d(explicit(exp(sin(x)+cos(x^2)),x,-3,3,y,-3,3),
4019 label(["UP 1",-2,0,3], ["UP 2",1.5,0,4]),
4021 label(["DOWN 1",2,0,-3]) )$
4027 @deffn {Objeto gráfico} mesh (@var{fila_1},@var{fila_2},...)
4028 Dibuja un enrejado cuadrangular en 3D.
4032 El argumento @var{fila_i} es una lista de @var{n} puntos en 3D de la forma
4033 @code{[[x_i1,y_i1,z_i1], ...,[x_in,y_in,z_in]]}, siendo todas las filas de
4034 igual longitud. Todos estos puntos definen una superficie arbitraria en 3D.
4035 En cierto sentido, se trata de una generalización del objeto @code{elevation_grid}.
4037 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{line_type},
4038 @code{line_width}, @code{color}, @code{key}, @code{wired_surface}, @code{enhanced3d} y @code{transform}.
4042 Un sencillo ejemplo.
4047 mesh([[1,1,3], [7,3,1],[12,-2,4],[15,0,5]],
4048 [[2,7,8], [4,3,1],[10,5,8], [12,7,1]],
4049 [[-2,11,10],[6,9,5],[6,15,1], [20,15,2]])) $
4052 Dibujando un triángulo en 3D.
4058 mesh([[1,0,0],[0,1,0]],
4059 [[0,0,1],[0,0,1]])) $
4067 surface_hide = true,
4070 mesh([[0,0,0], [0,1,0]],
4071 [[2,0,2], [2,2,2]]),
4073 mesh([[0,0,2], [0,1,2]],
4074 [[2,0,4], [2,2,4]])) $
4080 @deffn {Objeto gráfico} parametric (@var{xfun},@var{yfun},@var{par},@var{parmin},@var{parmax})
4081 @deffnx {Objeto gráfico} parametric (@var{xfun},@var{yfun},@var{zfun},@var{par},@var{parmin},@var{parmax})
4082 Dibuja funciones paramétricas en 2D y 3D.
4084 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{nticks},
4085 @code{line_width}, @code{line_type}, @code{key}, @code{color} y @code{enhanced3d}.
4089 @code{parametric (@var{xfun},@var{yfun},@var{par},@var{parmin},@var{parmax})} dibuja la función paramétrica
4090 @code{[@var{xfun},@var{yfun}]}, con el parámetro @var{par} tomando valores desde
4091 @var{parmin} hasta @var{parmax}.
4097 (%i2) draw2d(explicit(exp(x),x,-1,3),
4099 key = "This is the parametric one!!",
4100 parametric(2*cos(rrr),rrr^2,rrr,0,2*%pi))$
4105 @code{parametric (@var{xfun},@var{yfun},@var{zfun},@var{par},@var{parmin},@var{parmax})}
4106 dibuja la curva paramétrica @code{[@var{xfun},@var{yfun},@var{zfun}]}, con el parámetro
4107 @var{par} tomando valores desde @var{parmin} hasta @var{parmax}.
4113 (%i2) draw3d(explicit(exp(sin(x)+cos(x^2)),x,-3,3,y,-3,3),
4115 parametric(cos(5*u)^2,sin(7*u),u-2,u,0,2),
4118 parametric(t^2,sin(t),2+t,t,0,2),
4119 surface_hide = true,
4120 title = "Surface & curves" )$
4128 @deffn {Objeto gráfico} parametric_surface (@var{xfun},@var{yfun},@var{zfun},@var{par1},@var{par1min},@var{par1max},@var{par2},@var{par2min},@var{par2max})
4129 Dibuja superficies paramétricas en 3D.
4133 @code{parametric_surface (@var{xfun},@var{yfun},@var{zfun},@var{par1},@var{par1min},@var{par1max},@var{par2},@var{par2min},@var{par2max})}
4134 dibuja la superficie paramétrica @code{[@var{xfun},@var{yfun},@var{zfun}]},
4135 con el parámetro @var{par1} tomando valores desde @var{par1min} hasta @var{par1max}
4136 y el parámetro @var{par2} tomando valores desde @var{par2min} hasta @var{par2max}.
4138 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{draw_realpart}, @code{xu_grid},
4139 @code{yv_grid}, @code{line_type}, @code{line_width}, @code{key}, @code{wired_surface}, @code{enhanced3d}
4146 (%i2) draw3d(title = "Sea shell",
4150 surface_hide = true,
4151 parametric_surface(0.5*u*cos(u)*(cos(v)+1),
4152 0.5*u*sin(u)*(cos(v)+1),
4153 u*sin(v) - ((u+3)/8*%pi)^2 - 20,
4154 u, 0, 13*%pi, v, -%pi, %pi) )$
4161 @deffn {Objeto gráfico} points ([[@var{x1},@var{y1}], [@var{x2},@var{y2}],...])
4162 @deffnx {Objeto gráfico} points ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...])
4163 @deffnx {Objeto gráfico} points ([@var{y1},@var{y2},...])
4164 @deffnx {Objeto gráfico} points ([[@var{x1},@var{y1},@var{z1}], [@var{x2},@var{y2},@var{z2}],...])
4165 @deffnx {Objeto gráfico} points ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...], [@var{z1},@var{z2},...])
4166 @deffnx {Objeto gráfico} points (@var{matrix})
4167 @deffnx {Objeto gráfico} points (@var{1d_y_array})
4168 @deffnx {Objeto gráfico} points (@var{1d_x_array}, @var{1d_y_array})
4169 @deffnx {Objeto gráfico} points (@var{1d_x_array}, @var{1d_y_array}, @var{1d_z_array})
4170 @deffnx {Objeto gráfico} points (@var{2d_xy_array})
4171 @deffnx {Objeto gráfico} points (@var{2d_xyz_array})
4173 Dibuja puntos en 2D y 3D.
4175 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{point_size},
4176 @code{point_type}, @code{points_joined}, @code{line_width}, @code{key},
4177 @code{line_type} y @code{color}. En modo 3D también se ve afectado por @code{enhanced3d}.
4181 @code{points ([[@var{x1},@var{y1}], [@var{x2},@var{y2}],...])} o
4182 @code{points ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...])}
4183 dibuja los puntos @code{[@var{x1},@var{y1}]}, @code{[@var{x2},@var{y2}]}, etc. Si no se dan las abscisas,
4184 éstas se asignan automáticamente a enteros positivos consecutivos, de forma que
4185 @code{points([@var{y1},@var{y2},...])} dibuja los puntos @code{[1,@var{y1}]}, @code{[2,@var{y2}]}, etc.
4186 Si @var{matrix} es una matriz de dos columnas o de dos filas, @code{points (@var{matrix})}
4187 dibuja los puntos asociados.
4189 Si @var{1d_y_array} es un array lisp de números en 1D, @code{points (@var{1d_y_array})}
4190 los dibujará asignando las abscisas a números enteros consecutivos.
4191 @code{points (@var{1d_x_array}, @var{1d_y_array})} dibuja los puntos cuyas coordenadas
4192 se toman de los dos arrays pasados como argumentos. Si @var{2d_xy_array} es un array lisp
4193 2D de dos filas, o de dos columnas, @code{points (@var{2d_xy_array})} dibuja los correspondientes
4198 Dos tipos de argumentos para @code{points}, una lista de pares ordenados
4199 y dos listas con las coordenadas separadas.
4203 key = "Small points",
4204 points(makelist([random(20),random(50)],k,1,10)),
4205 point_type = circle,
4207 points_joined = true,
4208 key = "Great points",
4209 points(makelist(k,k,1,20),makelist(random(30),k,1,20)),
4210 point_type = filled_down_triangle,
4211 key = "Automatic abscissas",
4220 points_joined = impulses,
4223 points(makelist([random(20),random(50)],k,1,10)))$
4226 Array con ordenadas.
4229 (%i2) a: make_array (flonum, 100) $
4230 (%i3) for i:0 thru 99 do a[i]: random(1.0) $
4231 (%i4) draw2d(points(a)) $
4234 Dos arrays con coordenadas separadas.
4237 (%i2) x: make_array (flonum, 100) $
4238 (%i3) y: make_array (fixnum, 100) $
4239 (%i4) for i:0 thru 99 do (
4241 y[i]: random(10) ) $
4242 (%i5) draw2d(points(x, y)) $
4245 Un array 2D de dos columnas.
4248 (%i2) xy: make_array(flonum, 100, 2) $
4249 (%i3) for i:0 thru 99 do (
4250 xy[i, 0]: float(i/100),
4251 xy[i, 1]: random(10) ) $
4252 (%i4) draw2d(points(xy)) $
4255 Dibujando un array rellenado con la función @code{read_array}.
4258 (%i2) a: make_array(flonum,100) $
4259 (%i3) read_array (file_search ("pidigits.data"), a) $
4260 (%i4) draw2d(points(a)) $
4265 @code{points ([[@var{x1},@var{y1},@var{z1}], [@var{x2},@var{y2},@var{z2}],...])} o
4266 @code{points ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...], [@var{z1},@var{z2},...])}
4267 dibuja los puntos @code{[@var{x1},@var{y1},@var{z1}]}, @code{[@var{x2},@var{y2},@var{z2}]}, etc.
4268 Si @var{matrix} es una matriz de tres columnas o de tres filas, @code{points (@var{matrix})}
4269 dibuja los puntos asociados. Si @var{matrix} es una matriz columna o fila, las abscisas
4270 se asignan automáticamente.
4272 En caso de que los argumentos sean arrays lisp, @code{points (@var{1d_x_array}, @var{1d_y_array}, @var{1d_z_array})}
4273 toma las coordenadas de los tres arrays unidimensionales. Si @var{2d_xyz_array} es un array 2D de tres columnas,
4274 o de tres filas, entonces @code{points (@var{2d_xyz_array})} dibuja los puntos correspondientes.
4278 Una muestra tridimensional,
4281 (%i2) load ("numericalio")$
4282 (%i3) s2 : read_matrix (file_search ("wind.data"))$
4283 (%i4) draw3d(title = "Daily average wind speeds",
4285 points(args(submatrix (s2, 4, 5))) )$
4288 Dos muestras tridimensionales,
4291 (%i2) load ("numericalio")$
4292 (%i3) s2 : read_matrix (file_search ("wind.data"))$
4294 title = "Daily average wind speeds. Two data sets",
4296 key = "Sample from stations 1, 2 and 3",
4297 points(args(submatrix (s2, 4, 5))),
4299 key = "Sample from stations 1, 4 and 5",
4300 points(args(submatrix (s2, 2, 3))) )$
4303 Arrays unidimensionales,
4306 (%i2) x: make_array (fixnum, 10) $
4307 (%i3) y: make_array (fixnum, 10) $
4308 (%i4) z: make_array (fixnum, 10) $
4309 (%i5) for i:0 thru 9 do (
4312 z[i]: random(10) ) $
4313 (%i6) draw3d(points(x,y,z)) $
4316 Array bidimensional coloreado,
4319 (%i2) xyz: make_array(fixnum, 10, 3) $
4320 (%i3) for i:0 thru 9 do (
4321 xyz[i, 0]: random(10),
4322 xyz[i, 1]: random(10),
4323 xyz[i, 2]: random(10) ) $
4326 points_joined = true,
4330 Números de colores especificados explícitamente
4334 (%i2) pts: makelist([t,t^2,cos(t)], t, 0, 15)$
4335 (%i3) col_num: makelist(k, k, 1, length(pts))$
4337 enhanced3d = ['part(col_num,k),k],
4339 point_type = filled_circle,
4347 @deffn {Objeto gráfico} polar (@var{radius},@var{ang},@var{minang},@var{maxang})
4348 Dibuja funciones 2D definidas en coordenadas polares.
4352 @code{polar (@var{radius},@var{ang},@var{minang},@var{maxang})} dibuja la función
4353 @code{@var{radius}(@var{ang})} definida en coordenadas polares, con la variable
4354 @var{ang} tomando valores desde @var{minang} hasta @var{maxang}.
4356 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{nticks},
4357 @code{line_width}, @code{line_type}, @code{key} y @code{color}.
4363 (%i2) draw2d(user_preamble = "set grid polar",
4369 title = "Hyperbolic Spiral",
4370 polar(10/theta,theta,1,10*%pi) )$
4378 @deffn {Objeto gráfico} polygon ([[@var{x1},@var{y1}], [@var{x2},@var{y2}],...])
4379 @deffnx {Objeto gráfico} polygon ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...])
4380 Dibuja polígonos en 2D.
4384 @code{polygon ([[@var{x1},@var{y1}], [@var{x2},@var{y2}],...])} o
4385 @code{polygon ([@var{x1},@var{x2},...], [@var{y1},@var{y2},...])}:
4386 dibuja en el plano un polígono de vértices
4387 @code{[@var{x1},@var{y1}]}, @code{[@var{x2},@var{y2}]}, etc..
4389 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{transparent},
4390 @code{fill_color}, @code{border}, @code{line_width}, @code{key},
4391 @code{line_type} y @code{color}.
4397 (%i2) draw2d(color = "#e245f0",
4399 polygon([[3,2],[7,2],[5,5]]),
4401 fill_color = yellow,
4402 polygon([[5,2],[9,2],[7,5]]) )$
4408 @deffn {Objeto gráfico} quadrilateral (@var{point_1}, @var{point_2}, @var{point_3}, @var{point_4})
4409 Dibuja un cuadrilátero.
4413 @code{quadrilateral ([@var{x1},@var{y1}], [@var{x2},@var{y2}], [@var{x3},@var{y3}], [@var{x4},@var{y4}])} dibuja un cuadrilátero de vértices @code{[@var{x1},@var{y1}]},
4414 @code{[@var{x2},@var{y2}]}, @code{[@var{x3},@var{y3}]} y @code{[@var{x4},@var{y4}]}.
4416 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{transparent},
4417 @code{fill_color}, @code{border}, @code{line_width}, @code{key}, @code{xaxis_secondary},
4418 @code{yaxis_secondary}, @code{line_type}, @code{transform} y @code{color}.
4425 quadrilateral([1,1],[2,2],[3,-1],[2,-2]))$
4430 @code{quadrilateral ([@var{x1},@var{y1},@var{z1}], [@var{x2},@var{y2},@var{z2}], [@var{x3},@var{y3},@var{z3}], [@var{x4},@var{y4},@var{z4}])} dibuja un cuadrilátero de vértices
4431 @code{[@var{x1},@var{y1},@var{z1}]}, @code{[@var{x2},@var{y2},@var{z2}]},
4432 @code{[@var{x3},@var{y3},@var{z3}]} y @code{[@var{x4},@var{y4},@var{z4}]}.
4434 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{line_type},
4435 @code{line_width}, @code{color}, @code{key}, @code{enhanced3d} y @code{transform}.
4440 @deffn {Objeto gráfico} rectangle ([@var{x1},@var{y1}], [@var{x2},@var{y2}])
4441 Dibuja rectángulos en 2D.
4445 @code{rectangle ([@var{x1},@var{y1}], [@var{x2},@var{y2}])} dibuja un rectángulo de vértices opuestos
4446 @code{[@var{x1},@var{y1}]} y @code{[@var{x2},@var{y2}]}.
4448 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{transparent},
4449 @code{fill_color}, @code{border}, @code{line_width}, @code{key},
4450 @code{line_type} y @code{color}.
4456 (%i2) draw2d(fill_color = red,
4459 transparent = false,
4461 rectangle([-2,-2],[8,-1]), /* opposite vertices */
4465 rectangle([9,4],[2,-1.5]),
4467 yrange = [-3,4.5] )$
4476 @deffn {Objeto gráfico} region (@var{expr},@var{var1},@var{minval1},@var{maxval1},@var{var2},@var{minval2},@var{maxval2})
4477 Dibuja una región del plano definida por desigualdades.
4480 @var{expr} es una expresión formada por desigualdades y los operadores lógicos
4481 @code{and}, @code{or} y @code{not}. La región está acotada por el rectángulo
4482 definido por @math{[@var{minval1}, @var{maxval1}]} y
4483 @math{[@var{minval2}, @var{maxval2}]}.
4485 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{fill_color},
4486 @code{key}, @code{x_voxel} y @code{y_voxel}.
4495 region(x^2+y^2<1 and x^2+y^2 > 1/2,
4496 x, -1.5, 1.5, y, -1.5, 1.5));
4504 @deffn {Objeto gráfico} spherical (@var{radius},@var{azi},@var{minazi},@var{maxazi},@var{zen},@var{minzen},@var{maxzen})
4505 Dibuja funciones 3D definidas en coordenadas esféricas.
4509 @code{spherical (@var{radius},@var{azi},@var{minazi},@var{maxazi},@var{zen},@var{minzen},@var{maxzen})}
4510 dibuja la función @code{@var{radius}(@var{azi},@var{zen})} definida en coordenadas esféricas, con el @i{azimut}
4511 @var{azi} tomando valores desde @var{minazi} hasta @var{maxazi} y el @i{zenit} @var{zen} tomando valores desde
4512 @var{minzen} hasta @var{maxzen}.
4514 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{xu_grid},
4515 @code{yv_grid}, @code{line_type}, @code{key}, @code{wired_surface}, @code{enhanced3d} y @code{color}.
4521 (%i2) draw3d(spherical(1,a,0,2*%pi,z,0,%pi))$
4527 @deffn {Objeto gráfico} triangle (@var{punto_1}, @var{punto_2}, @var{punto_3})
4528 Dibuja un triángulo.
4532 @code{triangle ([@var{x1},@var{y1}], [@var{x2},@var{y2}], [@var{x3},@var{y3}])} dibuja
4533 un triángulo de vértices @code{[@var{x1},@var{y1}]}, @code{[@var{x2},@var{y2}]} y
4534 @code{[@var{x3},@var{y3}]}.
4536 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{transparent},
4537 @code{fill_color}, @code{border}, @code{line_width}, @code{key}, @code{xaxis_secondary},
4538 @code{yaxis_secondary}, @code{line_type}, @code{transform} y @code{color}.
4545 triangle([1,1],[2,2],[3,-1]))$
4550 @code{triangle ([@var{x1},@var{y1},@var{z1}], [@var{x2},@var{y2},@var{z2}], [@var{x3},@var{y3},@var{z3}])} dibuja un triángulo de vértices @code{[@var{x1},@var{y1},@var{z1}]},
4551 @code{[@var{x2},@var{y2},@var{z2}]} y @code{[@var{x3},@var{y3},@var{z3}]}.
4553 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{line_type},
4554 @code{line_width}, @code{color}, @code{key}, @code{enhanced3d} y @code{transform}.
4559 @deffn {Objeto gráfico} tube (@var{xfun},@var{yfun},@var{zfun},@var{rfun},@var{p},@var{pmin},@var{pmax})
4560 Dibuja un tubo en 3D de diámetro variable.
4564 @code{[@var{xfun},@var{yfun},@var{zfun}]}
4565 es la curva paramétrica de parámetro @var{p}, el cual toma valores entre
4566 @var{pmin} y @var{pmax}. Se colocan círculos de radio @var{rfun}
4567 con sus centros sobre la curva paramétrica y perpendiculares a ella.
4569 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{xu_grid},
4570 @code{yv_grid}, @code{line_type}, @code{line_width}, @code{key}, @code{wired_surface}, @code{enhanced3d},
4571 @code{color} y @code{capping}.
4580 tube(cos(a), a, 0, cos(a/10)^2,
4589 @deffn {Objeto gráfico} vector ([@var{x},@var{y}], [@var{dx},@var{dy}])
4590 @deffnx {Objeto gráfico} vector ([@var{x},@var{y},@var{z}], [@var{dx},@var{dy},@var{dz}])
4591 Dibuja vectores en 2D y 3D.
4593 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{head_both},
4594 @code{head_length}, @code{head_angle}, @code{head_type}, @code{line_width},
4595 @code{line_type}, @code{key} y @code{color}.
4599 @code{vector ([@var{x},@var{y}], [@var{dx},@var{dy}])} dibuja el vector
4600 @code{[@var{dx},@var{dy}]} con origen en @code{[@var{x},@var{y}]}.
4606 (%i2) draw2d(xrange = [0,12],
4609 vector([0,1],[5,5]), /* default type */
4611 vector([3,1],[5,5]),
4613 head_type = 'nofilled,
4615 vector([6,1],[5,5]))$
4620 @code{vector([@var{x},@var{y},@var{z}], [@var{dx},@var{dy},@var{dz}])}
4621 dibuja el vector @code{[@var{dx},@var{dy},@var{dz}]} con
4622 origen en @code{[@var{x},@var{y},@var{z}]}.
4628 (%i2) draw3d(color = cyan,
4629 vector([0,0,0],[1,1,1]/sqrt(3)),
4630 vector([0,0,0],[1,-1,0]/sqrt(2)),
4631 vector([0,0,0],[1,1,-2]/sqrt(6)) )$
4644 @node Funciones y variables para picture, Funciones y variables para worldmap, Funciones y variables para draw, draw
4645 @section Funciones y variables para picture
4651 @deffn {Función} get_pixel (@var{pic},@var{x},@var{y})
4652 Devuelve el pixel de la imagen @var{pic}. Las coordenadas @var{x} e @var{y}
4653 van desde 0 hasta @code{ancho-1} y @code{alto-1}, respectivamente.
4659 @deffn {Función} make_level_picture (@var{data})
4660 @deffnx {Función} make_level_picture (@var{data},@var{width},@var{height})
4661 Devuelve un objeto @code{picture} consistente en una imagen de niveles.
4662 @code{make_level_picture (@var{data})} construye el objeto @code{picture}
4663 a partir de la matriz @var{data}.
4664 @code{make_level_picture (@var{data},@var{width},@var{height})}
4665 construye el objeto a partir de una lista de números, en cuyo
4666 caso deben indicarse el ancho @var{width} y la altura @var{height}
4669 El objeto @code{picture} devuelto contiene los siguientes cuatro
4673 @item el símbolo @code{level}
4674 @item anchura de la imagen
4675 @item altura de la imagen
4676 @item un array de enteros con los valores de los píxeles
4677 entre 0 y 255. El argumento @var{data} debe contener sólo números
4678 entre 0 y 255; los cantidades negativas se transforman en ceros y las
4679 que son mayores de 255 se igualan a este número.
4684 Imagen de niveles a partir de una matriz.
4687 (%i2) make_level_picture(matrix([3,2,5],[7,-9,3000]));
4688 (%o2) picture(level, 3, 2, @{Array: #(3 2 5 7 0 255)@})
4691 Imagen de niveles a partir de una lista numérica.
4694 (%i2) make_level_picture([-2,0,54,%pi],2,2);
4695 (%o2) picture(level, 2, 2, @{Array: #(0 0 54 3)@})
4702 @deffn {Función} make_rgb_picture (@var{redlevel},@var{greenlevel},@var{bluelevel})
4703 Devuelve un objeto @var{picture} conteniendo una imagen en color (RGB).
4704 Los tres argumentos deben ser imágenes de niveles, para el rojo (R),
4705 verde (G) y azul (B).
4707 El objeto @var{picture} devuelto contiene los siguientes cuatro
4711 @item el símbolo @code{rgb}
4712 @item anchura de la imagen
4713 @item altura de la imagen
4714 @item un array de enteros de @var{3*ancho*alto} con los valores de los píxeles
4715 entre 0 y 255. Cada valor de pixel se representa en el array con tres números consecutivos
4716 (rojo, verde, azul).
4723 (%i2) red: make_level_picture(matrix([3,2],[7,260]));
4724 (%o2) picture(level, 2, 2, @{Array: #(3 2 7 255)@})
4725 (%i3) green: make_level_picture(matrix([54,23],[73,-9]));
4726 (%o3) picture(level, 2, 2, @{Array: #(54 23 73 0)@})
4727 (%i4) blue: make_level_picture(matrix([123,82],[45,32.5698]));
4728 (%o4) picture(level, 2, 2, @{Array: #(123 82 45 33)@})
4729 (%i5) make_rgb_picture(red,green,blue);
4730 (%o5) picture(rgb, 2, 2,
4731 @{Array: #(3 54 123 2 23 82 7 73 45 255 0 33)@})
4739 @deffn {Función} negative_picture (@var{pic})
4740 Devuelve el negativo de la imagen, sea ésta de tipo nivel (@var{level})
4741 o color (@var{rgb}).
4747 @deffn {Función} picture_equalp (@var{x},@var{y})
4748 Devuelve @code{true} si los dos argumentos son imágenes idénticas,
4749 o @code{false} en caso contrario.
4755 @deffn {Función} picturep (@var{x})
4756 Devuelve @code{true} si el argumento es una imagen bien formada,
4757 o @code{false} en caso contrario.
4763 @deffn {Función} read_xpm (@var{xpm_file})
4764 Lee el fichero gráfico en formato xpm y devuelve un objeto @code{picture}.
4770 @deffn {Función} rgb2level (@var{pic})
4771 Transforma una imagen en color @var{rgb} a otra de niveles @var{level}
4772 promediando los niveles.
4778 @deffn {Función} take_channel (@var{im},@var{color})
4779 Si el argumento @var{color} es @code{red}, @code{green} o @code{blue},
4780 la función @code{take_channel} devuelve el canal de color correspondiente
4781 de la imagen @var{im}.
4787 (%i2) red: make_level_picture(matrix([3,2],[7,260]));
4788 (%o2) picture(level, 2, 2, @{Array: #(3 2 7 255)@})
4789 (%i3) green: make_level_picture(matrix([54,23],[73,-9]));
4790 (%o3) picture(level, 2, 2, @{Array: #(54 23 73 0)@})
4791 (%i4) blue: make_level_picture(matrix([123,82],[45,32.5698]));
4792 (%o4) picture(level, 2, 2, @{Array: #(123 82 45 33)@})
4793 (%i5) make_rgb_picture(red,green,blue);
4794 (%o5) picture(rgb, 2, 2,
4795 @{Array: #(3 54 123 2 23 82 7 73 45 255 0 33)@})
4796 (%i6) take_channel(%,'green); /* simple quote!!! */
4797 (%o6) picture(level, 2, 2, @{Array: #(54 23 73 0)@})
4803 @node Funciones y variables para worldmap, , Funciones y variables para picture, draw
4804 @section Funciones y variables para worldmap
4807 Este paquete carga automáticamente el paquete @code{draw}.
4810 @subsection Variables y Funciones
4817 @defvr {Global variable} boundaries_array
4818 Valor por defecto: @code{false}
4820 @code{boundaries_array} es donde el objeto gráfico @code{geomap} lee
4821 las coordenadas de las líneas fronterizas.
4823 Cada componente de @code{boundaries_array} es un array de números decimales
4824 en coma flotante representando las coordenadas que definen un segmento
4825 poligonal o línea fronteriza.
4827 Véase también @code{geomap}.
4833 @deffn {Función} numbered_boundaries (@var{nlist})
4834 Dibuja una lista de segmentos poligonales (líneas
4835 fronterizas), etiquetadas con sus números correspondientes
4836 (coordenadas de @code{boundaries_array}). Esta función es
4837 de mucha ayuda a la hora de definir nuevas entidades
4842 Mapa de Europa con las fronteras y costas etiquetadas con
4843 su componente numérica de @code{boundaries_array}.
4845 (%i1) load("worldmap")$
4846 (%i2) european_borders:
4847 region_boundaries(-31.81,74.92,49.84,32.06)$
4848 (%i3) numbered_boundaries(european_borders)$
4855 @deffn {Función} make_poly_continent (@var{continent_name})
4856 @deffnx {Función} make_poly_continent (@var{country_list})
4857 Construye los polígonos necesarios para dibujar
4858 un continente o lista de países coloreados.
4863 (%i1) load("worldmap")$
4864 (%i2) /* A continent */
4865 make_poly_continent(Africa)$
4866 (%i3) apply(draw2d, %)$
4867 (%i4) /* A list of countries */
4868 make_poly_continent([Germany,Denmark,Poland])$
4869 (%i5) apply(draw2d, %)$
4877 @deffn {Función} make_poly_country (@var{country_name})
4878 Construye los polígonos necesarios para dibujar
4879 un país coloreado. En caso de contener islas,
4880 un país tendrá asociados varios polígonos.
4885 (%i1) load("worldmap")$
4886 (%i2) make_poly_country(India)$
4887 (%i3) apply(draw2d, %)$
4894 @deffn {Función} make_polygon (@var{nlist})
4895 Devuelve un objeto @code{polygon} a partie de una lista
4896 de líneas fronterizas y de costas. El
4897 argumento @var{nlist} debe ser una lista de componentes
4898 de @code{boundaries_array}.
4902 La variable Bhutan (Bután) está definida con los números
4903 fronterizos 171, 173 y 1143, de manera que @code{make_polygon([171,173,1143])}
4904 concatena los arrays @code{boundaries_array[171]}, @code{boundaries_array[173]} y
4905 @code{boundaries_array[1143]} y devuelve un objeto @code{polygon}
4906 apto para ser dibujado por @code{draw}. A fin de evitar mensajes
4907 de errores, los arrays deben ser compatibles en el sentido de que dos
4908 de ellos consecutivos deben tener dos coordenadas comunes en los
4909 extremos. En este ejemplo, las dos primeras componentes de
4910 @code{boundaries_array[171]} son iguales a las dos últimas de
4911 @code{boundaries_array[173]}, y las dos primeras de @code{boundaries_array[173]}
4912 coinciden con las dos primeras de @code{boundaries_array[1143]};
4913 en conclusión, los números de segmentos poligonales171, 173 y 1143
4914 (en este orden) son compatibles y el polígono
4915 coloreado se podrá dibujar.
4917 (%i1) load("worldmap")$
4919 (%o2) [[171, 173, 1143]]
4920 (%i3) boundaries_array[171];
4922 #(88.750549 27.14727 88.806351 27.25305 88.901367 27.282221
4923 88.917877 27.321039)@}
4924 (%i4) boundaries_array[173];
4926 #(91.659554 27.76511 91.6008 27.66666 91.598022 27.62499
4927 91.631348 27.536381 91.765533 27.45694 91.775253 27.4161
4928 92.007751 27.471939 92.11441 27.28583 92.015259 27.168051
4929 92.015533 27.08083 92.083313 27.02277 92.112183 26.920271
4930 92.069977 26.86194 91.997192 26.85194 91.915253 26.893881
4931 91.916924 26.85416 91.8358 26.863331 91.712479 26.799999
4932 91.542191 26.80444 91.492188 26.87472 91.418854 26.873329
4933 91.371353 26.800831 91.307457 26.778049 90.682457 26.77417
4934 90.392197 26.903601 90.344131 26.894159 90.143044 26.75333
4935 89.98996 26.73583 89.841919 26.70138 89.618301 26.72694
4936 89.636093 26.771111 89.360786 26.859989 89.22081 26.81472
4937 89.110237 26.829161 88.921631 26.98777 88.873016 26.95499
4938 88.867737 27.080549 88.843307 27.108601 88.750549
4940 (%i5) boundaries_array[1143];
4942 #(91.659554 27.76511 91.666924 27.88888 91.65831 27.94805
4943 91.338028 28.05249 91.314972 28.096661 91.108856 27.971109
4944 91.015808 27.97777 90.896927 28.05055 90.382462 28.07972
4945 90.396088 28.23555 90.366074 28.257771 89.996353 28.32333
4946 89.83165 28.24888 89.58609 28.139999 89.35997 27.87166
4947 89.225517 27.795 89.125793 27.56749 88.971077 27.47361
4948 88.917877 27.321039)@}
4949 (%i6) Bhutan_polygon: make_polygon([171,173,1143])$
4950 (%i7) draw2d(Bhutan_polygon)$
4957 @deffn {Función} region_boundaries (@var{x1},@var{y1},@var{x2},@var{y2})
4958 Detecta los segmentos poligonales almacenados en la variable global
4959 @code{boundaries_array} totalmente contenidos en el rectángulo de vértices
4960 (@var{x1},@var{y1}) -superior izquierdo- y (@var{x2},@var{y2})
4965 Devuelve los números de los segmentos necesarios para
4966 dibujar el sur de Italia.
4968 (%i1) load("worldmap")$
4969 (%i2) region_boundaries(10.4,41.5,20.7,35.4);
4970 (%o2) [1846, 1863, 1864, 1881, 1888, 1894]
4971 (%i3) draw2d(geomap(%))$
4978 @deffn {Función} region_boundaries_plus (@var{x1},@var{y1},@var{x2},@var{y2})
4979 Detecta los segmentos poligonales almacenados en la variable global
4980 @code{boundaries_array} con al menos un vértice dentro del rectángulo
4981 definido por los extremos (@var{x1},@var{y1}) -superior izquierdo- y (@var{x2},@var{y2})
4987 (%i1) load("worldmap")$
4988 (%i2) region_boundaries_plus(10.4,41.5,20.7,35.4);
4989 (%o2) [1060, 1062, 1076, 1835, 1839, 1844, 1846, 1858,
4990 1861, 1863, 1864, 1871, 1881, 1888, 1894, 1897]
4991 (%i3) draw2d(geomap(%))$
4997 @subsection Objetos gráficos
5002 @deffn {Objeto gráfico} geomap (@var{numlist})
5003 @deffnx {Objeto gráfico} geomap (@var{numlist},@var{3Dprojection})
5004 Dibuja mapas cartográficos en 2D y 3D.
5008 Esta función trabaja junto con la variable global @code{boundaries_array}.
5010 El argumento @var{numlist} es una lista de números o de listas de
5011 números. Todos estos números deben ser enteros mayores o iguales que cero,
5012 representando las componentes del array global @code{boundaries_array}.
5014 Cada componente de @code{boundaries_array} es un array de decimales en
5015 coma flotante, las coordenadas de un segmento poligonal o línea
5018 @code{geomap (@var{numlist})} toma los enteros de sus argumentos y
5019 dibuja los segmentos poligonales asociados de @code{boundaries_array}.
5021 Este objeto se ve afectado por las siguientes @i{opciones gráficas}: @code{line_width},
5022 @code{line_type} y @code{color}.
5026 Un sencillo mapa hecho a mano:
5028 (%i1) load("worldmap")$
5029 (%i2) /* Vertices of boundary #0: @{(1,1),(2,5),(4,3)@} */
5030 ( bnd0: make_array(flonum,6),
5031 bnd0[0]:1.0, bnd0[1]:1.0, bnd0[2]:2.0,
5032 bnd0[3]:5.0, bnd0[4]:4.0, bnd0[5]:3.0 )$
5033 (%i3) /* Vertices of boundary #1: @{(4,3),(5,4),(6,4),(5,1)@} */
5034 ( bnd1: make_array(flonum,8),
5035 bnd1[0]:4.0, bnd1[1]:3.0, bnd1[2]:5.0, bnd1[3]:4.0,
5036 bnd1[4]:6.0, bnd1[5]:4.0, bnd1[6]:5.0, bnd1[7]:1.0)$
5037 (%i4) /* Vertices of boundary #2: @{(5,1), (3,0), (1,1)@} */
5038 ( bnd2: make_array(flonum,6),
5039 bnd2[0]:5.0, bnd2[1]:1.0, bnd2[2]:3.0,
5040 bnd2[3]:0.0, bnd2[4]:1.0, bnd2[5]:1.0 )$
5041 (%i5) /* Vertices of boundary #3: @{(1,1), (4,3)@} */
5042 ( bnd3: make_array(flonum,4),
5043 bnd3[0]:1.0, bnd3[1]:1.0, bnd3[2]:4.0, bnd3[3]:3.0)$
5044 (%i6) /* Vertices of boundary #4: @{(4,3), (5,1)@} */
5045 ( bnd4: make_array(flonum,4),
5046 bnd4[0]:4.0, bnd4[1]:3.0, bnd4[2]:5.0, bnd4[3]:1.0)$
5047 (%i7) /* Pack all together in boundaries_array */
5048 ( boundaries_array: make_array(any,5),
5049 boundaries_array[0]: bnd0, boundaries_array[1]: bnd1,
5050 boundaries_array[2]: bnd2, boundaries_array[3]: bnd3,
5051 boundaries_array[4]: bnd4 )$
5052 (%i8) draw2d(geomap([0,1,2,3,4]))$
5055 El paquete auxiliar @code{worldmap} asigna al array global
5056 @code{boundaries_array} líneas fronterizas
5057 reales en coordenadas (longitud, latitud). Estos datos son
5058 de dominio público y proceden de
5059 @url{http://www-cger.nies.go.jp/grid-e/gridtxt/grid19.html}.
5060 El paquete @code{worldmap} también define fronteras
5061 de países, continentes y líneas
5062 costeras a partir de las
5063 componentes de @code{boundaries_array} (véase el
5064 fichero @code{share/draw/worldmap.mac} para más
5065 información). El paquete @code{worldmap} carga
5066 automáticamente el paquete @code{draw}.
5068 (%i1) load("worldmap")$
5069 (%i2) c1: gr2d(geomap([Canada,United_States,
5071 (%i3) c2: gr2d(geomap(Africa))$
5072 (%i4) c3: gr2d(geomap([Oceania,China,Japan]))$
5073 (%i5) c4: gr2d(geomap([France,Portugal,Spain,
5074 Morocco,Western_Sahara]))$
5075 (%i6) draw(columns = 2,
5079 @code{worldmap} se puede utilizar para dibujar países
5080 como polígonos. En este caso, ya no será necesario
5081 hacer uso del objeto gráfico @code{geomap}, pero sí de
5082 @code{polygon}. Puesto que en este caso se utilizan listas en lugar de
5083 arrays, los mapas se reproducirán de forma más lenta. Véanse
5084 también @code{make_poly_country} y @code{make_poly_continent} para
5085 comprender el siguiente código.
5087 (%i1) load("worldmap")$
5088 (%i2) mymap: append(
5089 [color = white], /* borders are white */
5090 [fill_color = red], make_poly_country(Bolivia),
5091 [fill_color = cyan], make_poly_country(Paraguay),
5092 [fill_color = green], make_poly_country(Colombia),
5093 [fill_color = blue], make_poly_country(Chile),
5094 [fill_color = "#23ab0f"], make_poly_country(Brazil),
5095 [fill_color = goldenrod], make_poly_country(Argentina),
5096 [fill_color = "midnight-blue"], make_poly_country(Uruguay))$
5097 (%i3) apply(draw2d, mymap)$
5102 @code{geomap (@var{numlist})} proyecta los mapas sobre la esfera de radio 1
5103 y centro (0,0,0). Es posible cambiar la esfera o el tipo de proyección haciendo
5104 uso de @code{geomap (@var{numlist},@var{3Dprojection})}.
5106 Proyecciones 3D disponibles:
5110 @code{[spherical_projection,@var{x},@var{y},@var{z},@var{r}]}: proyecta los mapas sobre la esfera de radio
5111 @var{r} y centro (@var{x},@var{y},@var{z}).
5113 (%i1) load("worldmap")$
5114 (%i2) draw3d(geomap(Australia), /* default projection */
5116 [spherical_projection,2,2,2,3]))$
5120 @code{[cylindrical_projection,@var{x},@var{y},@var{z},@var{r},@var{rc}]}: re-proyecta mapas esféricos
5121 sobre el cilindro de radio @var{rc} cuyo eje pasa a través de los polos del globo
5122 de radio @var{r} y centro (@var{x},@var{y},@var{z}).
5124 (%i1) load("worldmap")$
5125 (%i2) draw3d(geomap([America_coastlines,Eurasia_coastlines],
5126 [cylindrical_projection,2,2,2,3,4]))$
5130 @code{[conic_projection,@var{x},@var{y},@var{z},@var{r},@var{alpha}]}: re-proyecta mapas esféricos sobre los
5131 conos de ángulo @var{alpha}, cuyos ejes pasan a través de los polos del globo de radio @var{r}
5132 y centro (@var{x},@var{y},@var{z}). Ambos conos, norte y sur, son tangentes a la esfera.
5134 (%i1) load("worldmap")$
5135 (%i2) draw3d(geomap(World_coastlines,
5136 [conic_projection,0,0,0,1,90]))$
5140 En @url{https://riotorto.users.sourceforge.net/Maxima/gnuplot/geomap/}
5141 hay ejemplos más elaborados.