Libros fb2 en castellano www papyrefb2-net jul2011
Disenograficoenlatex1
1. x y
z
αϕ1(·)
µN
βϕ2(·)
x y
ǫx − u1 ǫy − u1
S I R
λϕ3(·)
λrϕ4(·)
xr yr
θ
βrϕ5(·)
ǫryrǫrxr
fαψ1(·)m + αrψ1(·)mr
µS µI µR
Diseño Gráfico en LATEX
Gráficos Matemáticos de Alta Calidad
Efraín Alberto Hoyos Salcedo
Aníbal Muñoz Loaiza
Jorge Mario García Usuga
2. Diseño gráfico en LATEX
Jorge Mario García Usuga
14 de diciembre de 2007
4. PREFACIO
Para muchos usuarios de LATEX , se hace imprescindible la inclusión
de material gráfico dentro de sus documentos matemáticos. General-
mente, el tema es algo desagradable para las personas que están dando
sus primeros pasos en LATEX , pues se deben tener archivos separados
del documento fuente para su posterior compilación. Hasta hace al-
gunos años se empezaron a implementar paquetes con la capacidad
de hacer gráficos matemáticos y no matemáticos dentro de nuestros
documentos TEX , esto se logró con paquetes como PSTricks y XY-pic
entre otros, los cuales permitieron crear gráficos a partir de códigos
tipo TeX.
Gráficos matemáticos como los ejes coordenados, diagramas de flujo,
diagramas conmutativos, gráfico de curvas en R2 y R3 entre otros, se
incluían en LATEX , haciéndolos en otros programas y luego exportán-
dolos a un formato compatible como ps o bmp. Esto producía una
incompatibilidad entre los tipos de letra usados por el software para
hacer las graficas y las fuentes usadas por LaTeX. Paquetes como
PSTricks yXY-pic presentan una forma muy “matemática"para realizar
este tipo de dibujos y producir artículos, libros y demás producción
escrita, con gráficos de excelente calidad. Como ejemplo del poder de
dichos paquetes, se presenta la portada de este libro, la cual se hizo
enteramente con PSTricks y XY-pic.
3
5. 4
El libro está dividido en tres capítulos. El primero hace una extensa
revisión del paquete PSTricks, incluyendo ejemplos con su respectivo
código fuente. El segundo muestra dos herramientas muy útiles para
aquellas personas que no gustan de la programación en LATEX y el
último capítulo, es una recopilación de ejemplos hechos con XY-pic,
orientados a la construcción de diagramas de dinámicas ecológicas y
epidemiológicas. El libro está dirigido a usuarios avanzados de LATEX ,
pues, en los ejemplos se usan macros e instrucciones que se asume el
usuario ya debe conocer. Si el lector no tiene conocimiento de dichas
instrucciones refiérase a los documentos [11],[12],[9] y [6].
Esperamos que este material sirva de apoyo a docentes, alumnos y
TEX-nócratas que gusten de gráficos matemáticos de alta calidad en
sus documentos.
10. CAPÍTULO 1
Gráficos con PSTricks
PSTricks es un paquete que esta incluido en LATEX con base en las
librerías macros de TEX- PostScript, fue creado por Timothy Van
Zandt de la Universidad de Princeton en 1993. Estas librerías son
compatibles con AMS-TEX y AMS-LATEX. El paquete fue diseñado
específicamente para gráficos matemáticos de alta calidad, utilizando
técnicas de gráficos vectorizados, proporcionando así una calidad que
otros paquetes no pueden alcanzar. Con PSTricks se pueden incluir es-
tilos de líneas, objetos geométricos como rectángulos, triángulos; ejes
coordenados, herramientas para gráficos de diagramas de flujo, grafos,
mayas, objetos 3D, colores y efectos de texto, entre otros.
La instalación de PSTricks, es muy fácil, en la versión para Windows
MIKTEX 2.5 ya viene pre instalado y no requiere manipular archivos
para su configuración; para versiones inferiores, se debe tener cuida-
do con la ubicación de los archivos. PSTricks también está disponible
para Linux, Mac y Unix.
Empezaremos por poner las librerías en el preámbulo de nuestro doc-
umento
usepackage{pstricks}
usepackage{pst-plot}
9
11. 10 1.1. El entorno
Paquete Función
Pst-plot Útil para gráficos que conlleven rectas,
polígonos, ejes y curvas
Pst-char Permite incluir texto con efectos especiales
Pst-text Muy similar al anterior, pero este permite
poner texto a lo largo de curvas
Pst-tree Útil para la contrucción de árboles
Pst-coil Zig-zags y resortes en electrónica
Pst-node Ideal para grafos y diagramas de flujo
Cuadro 1.1: Módulos de PSTricks
Sin embargo, es bueno que para trabajar con todas las opciones, hay
que usar un paquete que los una a todos, este se incluye de la siguiente
manera:
usepackage{pst-all}
PSTrick también incluye paquetes como pst-node especial para grafos,
el cuadro 1.1 muestra los diferentes módulos y su uso:
1.1 El entorno
Para incluir una gráfica con PSTricks en nuestro documento, debemos
invocar el entorno pspicture con la siguiente secuencia de instruc-
ciones:
begin{pspicture}(x,y)(x’,y’)
rput(0,0){hola}
end{pspicture}
Los parámetros x, y y x′, y′ son las esquinas opuestas de un rectángulo
imaginario. Nuestra gráfica se puede salir de dicho rectángulo, pero
usando begin{pspicture*}(x,y)(x’,y’) se recorta todo lo que so-
bre salga del rectángulo delimitado. El anterior código nos devolvera
el siguiente resultado
12. 1. Gráficos con PSTricks 11
hola
Nada del otro mundo, sin embargo, podemos disponer de una malla
que nos guíe en la ubicación de nuestros objetos en PSTricks, para
esto creamos un nuevo objeto de la siguiente manera y lo ubicamos
antes del inicio del documento: begin{document}.
newpsobject{malla}{psgrid}{subgriddiv=1,griddots=10,
gridlabels=6pt}
Esto nos permitirá crear una malla útil para la ubicación de nu-estros
objetos
begin{pspicture}(-2,-2)(2,2) malla
rput(0,0){hola}
end{pspicture}
El resultado es el siguiente:
-2 -1 0 1 2
-2
-1
0
1
2
hola
13. 12 1.2. Puntos
El comando rput se usa para ubicar objetos en el espacio delimitado,
más adelante estudiaremos la versatilidad de este comando. Por ahora,
observemos que aparece una malla numerada alrededor de nuestra
gráfica, podemos ubicar ahora otros objetos con la ayuda de dicha
cuadrícula. Ubicaremos la palabra “mundo” en la posición (1, −1)
-2 -1 0 1 2
-2
-1
0
1
2
hola
mundo
begin{pspicture}(-2,-2)(2,2)
malla
rput(0,0){hola}
rput(1,-1){mundo}
end{pspicture}
Si deseo que la malla sea más fina o por el contrario con la cuadric-
ula más grande, podemos cambiar dicho parámetro con la instruc-
ción psset{unit=1}, sólo debemos cambiar el valor de 1 por el que
necesitemos y ubicar esta instrucción antes del begin{pspicture}.
psset{unit=1} permite confugurar nuestro gráfico. se ubica antes
del begin{pspicture} y se pueden predeterminar algunas opciones
como el color, la escala, el grosor de las líneas, etc.
-2 -1 0 1 2
-2
-1
0
1
2
hola
mundo
psset{unit=0.6}
begin{pspicture}(-2,-2)(2,2)
malla
rput(0,0){hola}
rput(1,-1){mundo}
end{pspicture}
1.2 Puntos
PSTricks permite la inclusión de puntos con el siguiente comando
psdots[par](x1,y1)(x2,y2)(xn,yn)
El siguiente ejemplo colocaremos 9 puntos con estilos diferentes:
14. 1. Gráficos con PSTricks 13
0 1 2 3 4 5 6 7 8 9
0
1
+ |
psset{unit=1.2, dotsize=5pt 0}
begin{pspicture}(0,0)(9,1)malla
psdots(0.5,0.5)
psdots[dotstyle=+](1.5,0.5)
psdots[dotstyle=triangle](2.5,0.5)
psdots[dotstyle=triangle*](3.5,0.5)
psdots[dotstyle=square](4.5,0.5)
psdots[dotstyle=square*](5.5,0.5)
psdots[dotstyle=pentagon](6.5,0.5)
psdots[dotstyle=pentagon*](7.5,0.5)
psdots[dotstyle=|](8.5,0.5)
end{pspicture}
En el cuadro 1.2 ilustraremos los diferentes estilos de puntos mostra-
dos en el ejemplo anterior. Además de estos estilos de puntos podemos
adicionar algunas otras opciones.
dotsize=dim
Con esta opción podemos cambiar el tamaño del punto, por defecto
es 2pt
dotscale=num1 num2
Con ella podemos escalar el tamaño de un punto, con el primer número
el tamaño horizontal y con el segundo el tamaño vertical. Por defecto
es 1
dotangle=angle
Los puntos son rotados por el ángulo determinado por el parámetro
angle, por omisión es cero.
En muchas ocasiones es importante ubicar puntos en nuestras gráficas,
el siguiente ejemplo muestra la utilidad de estas opciones:
15. 14 1.2. Puntos
Estilo Ejemplo
*
+
+ +
|
| |
triangle
triangle*
square
square*
pentagon
pentagon*
Cuadro 1.2: Estilos de Puntos en PSTricks
psset{unit=0.5}
begin{pspicture}(0,-2.3)(4.9,2.3)
psdots[dotsize=0.266](2.8,0.6)
rput(0.6,-1.6)
{psaxes[linewidth=0.04](0,0)(0,0)(4,4)}
psdots[dotsize=0.17,dotangle=-66.0]
(1.6,1.0)
psdots[dotsize=0.4,dotstyle=triangle](3.6,-0.5)
psdots[dotsize=0.4,dotstyle=pentagon*](4.6,-0.7)
end{pspicture}
0 1 2 3 4
0
1
2
3
4
16. 1. Gráficos con PSTricks 15
1.3 Líneas y polígonos
Las líneas y los polígonos son una de las herramientas más versatiles
en PSTricks. Con los puntos y las rectas se pueden crear una gran
variedad de figuras y formas muy comunes en matemáticas como: ejes
coordenados, digramas lineales, árboles, etc. A continuación presenta-
mos su configuración básica.
1.3.1. Rectas simples
psline[par]{flechas}(x0,y0)(x1,y1)...(xn,yn)
Esta instruccion dibuja una linea a travéz de las coordenas establecidas
por los puntos (x0, y0)(x1, y1) . . . (xn, yn)
La instrucción psline tiene los siguientes parametros:
linearc=dim
Por omisión es 0pt y hace referencia al arco con el que se dibujan las
curvas (si estamos dibujando un polígono). Dicha dimensión debe ser
positiva.
linewidth=n
Con esta opción podemos cambiar el ancho de la línea, se puede ini-
cializar en cero. Por defecto es 0.8pt
linestyle=
La opción permite cambiar la forma como se pinta la línea, esta puede
ser solid que es la opción por defecto, dashed ofrece una línea a tro-
zos y dotted una línea punteada.
dash= n b
Permite cambiar el patrón de negro o blanco en la línea a trozos por
omisión son 5pt y 3pt. Si queremos una línea igualemte espaciada
podemos cambiar la opción a 5pt 5pt para obtener el efecto deseado.
dotsep= n
Al igual que en dash, dotsep permite cambiar el patrón de separación
17. 16 1.3. Líneas y polígonos
de los puntos en las líneas punteadas. Por omisión es 3pt
linecolor= color
Permite cambiar el color de la línea, por omisión es black, en la sec-
ción 1.6 mostraremos otros colores posibles con PSTricks.
doubleline= n
Permite trazar una línea doble o sencilla, por defecto es false, es decir
sencilla, si la queremos doble cambiamos n por true.
Veamos el siguiente ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.4}
begin{pspicture}(0,0)(4,3)
malla
psline(0,1.5)(4,1.5)
psline[linecolor=blue,
doubleline=true,
linestyle=dotted ](0,0.5)(4,0.5)
psline[linecolor=red,
linestyle=dashed ](0,2.5)(4,2.5)
end{pspicture}
1.3.1.1. Flechas
Las opciones de flechas se pueden implementar para construir ejes co-
ordenados o diagramas de flujo, árboles, etc, para este propósito cam-
biamos el párametro entre las llaves {}, a continuación en el cuadro
1.3 mostraremos las diferentes estilos de flechas.
1.3.2. Rectas con el comando qline
Para contruir flechas simples podemos usar el comando qline (x0, y0)
(x1, y1), el cual dibuja una recta entre los puntos sin parámetros de
grosor, estilos o flechas, veamos el siguiente ejemplo:
18. 1. Gráficos con PSTricks 17
Parámetro Ejemplo Parámetro Ejemplo
-> <->
<- ->>
>>-<< <<->>
|<- ->|
>- -<
|- -|
|<->| |-|
[- -]
(- -)
[-] (-)
o- -o
*- -*
*-* o-o
Cuadro 1.3: Estilos de flechas para rectas en PSTricks
0 1 2 3
0
1
psset{unit=2.4}
begin{pspicture}(0,0)(1,2)
malla
qline(0,0)(3,1)
end{pspicture}
1.3.3. Polígonos
Este comando es muy similar a psline, y dibuja un polígono cerrado
que une el primer punto (x0, y0) con el último (xn, yn).
pspolygon[par](x0,y0)(x1,y1)(x2,y2)...(xn,yn)$
Veamos el siguiente ejemplo:
0 1 2
0
1
2
psset{unit=2.4}
begin{pspicture}(0,0)(2,2)
malla
pspolygon[linearc=.2]
(0,1)(1,0)(2,1)(1,2)
end{pspicture}
19. 18 1.4. Círculos, elipses y arcos
1.3.4. Frames con psframes
Esta instrucción dibuja un rectángulo entre las esquinas opuestas (x0, y0)
y (x1, y1)
psframe[par](x0,y0)(x1,y1)
0 1 2
0
1
2
psset{unit=2.4}
begin{pspicture}(0,0)(2,2)
malla
psframe(0.5,0.5)(1.5,1.5)
end{pspicture}
1.4 Círculos, elipses y arcos
1.4.1. Círculos
Para dibujar círculos, elipses y arcos, PSTricks implementa el siguiente
comando
pscircle[par](x0,y0){r}
La instrucción simplemente dibuja una circunferencia con centro en
(x0, y0) y radio r
Por ejemplo:
0 1 2 3
0
1
2
3
psset{unit=1.5}
begin{pspicture}(0,0)(3,3)
malla
pscircle[linewidth=2pt]
(1,1){1}
pscircle[linestyle=dashed]
(1.5,1.5){1}
pscircle[linestyle=dotted]
(1.5,2){1.2}
end{pspicture}
20. 1. Gráficos con PSTricks 19
Los parámetros son los mismos que podemos encontar para dibujar
rectas. En el ejemplo anterior podemos ver el manejo de estas opciones.
1.4.2. Sección de círculo
PSTricks implemeta la instrucción pswedge para dibujar secciones de
círculos, muy usados en estadística y geometría:
pswedge[par](x0,y0){r}{ang1}{ang2}
La instrucción requiere un punto como centro (x0, y0), y con el radio
r dibujará una sección de círculo entre los ángulos arg1 y arg2.
0 1 2 3
0
1
2
3
psset{unit=2.8}
begin{pspicture}(0,0)(3,3)
malla
pswedge[linewidth=2pt]
{1}{0}{70}
pswedge[linewidth=2pt]
{2}{0}{70}
pswedge[linewidth=2pt]
(3,3){2}{180}{270}
1.4.3. Elipses
Al igual que con el círculo las elipses necesitan un centro (x0, y0), pero,
para lograr el efecto requieren dos radios r1 y r2.
psellipse[par](x0,y0)(r1,r1)
veamos el siguiente ejemplo :
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)malla
psellipse[linestyle=dashed]
(2,1)(2,1)
psellipse(2,1.5)(1,1.5)
21. 20 1.4. Círculos, elipses y arcos
1.4.4. Arcos
Los arcos requieren de un centro (x, y) que se tomará como base para
la circunferencia imaginária con la cual trazaremos el arco, un radio r
que es la distancia entre el centro y el arco, y dos ángulos angA, angB
que al igual que en la sección de círculos sirve para denotar el inicio y
el fin del arco.
psarc[par]{flechas}(x,y){r}{angA}{angB}
La funcion psarc utiliza los siguientes parámetros extra:
showpoints=
Se usa para mostar una línea punteada del centro de la circunferencia
imaginária a los extremos del arco, por omisión es false .
arcsepA= y arcsepB=
Estos parámetros que por defecto son 0pt, se usa para que parte del
arco tambien quede dibujado con lineas punteadas, comenzando por
angA o por angB, dependiendo de la functón que usemos.
arcsep=
Con esta opción podemos hacer lo mismo que con las opciones arcsepA
y arcsepB pero simultáneamente por ambos extremos del arco.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psarc[showpoints=true,
arcsepA=2](0.2,0.2){1.5}{0}{90}
psarc[showpoints=true,
arcsepB=2](3.8,0.2){1.5}{90}{180}
psarc[showpoints=true,
arcsep=1](2,3){1.5}{190}{350}
Para hacer arcos con flechas se une la instrucción psarcn con la sigu-
22. 1. Gráficos con PSTricks 21
iente notación:
psarcn[par]{flecha}(x,y){r}{angA}{angB}
El arco es dibujado en sentido horario, y tiene una opción {flecha}
con la cual podemos dibujar flechas como se indica en el cuadro 1.3.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psarc{o-o}(0.2,0.2)
{1.5}{0}{90}
psarc{<->}(3.8,0.2)
{1.5}{90}{180}
psarc[arcsep=1]{>>-<<}(2,3){1.5}
{190}{350}
end{pspicture}
1.5 Curvas
Para dibujar curvas, PSTricks utiliza algorítmos de interpolación de
puntos, una de las más simples nos permite hacer una curva entre cu-
atro puntos; veamos la instrucción psbezier.
psbezier[par]{flechas}(x0,y0)(x1,y1)(x2,y2)(x3,y3)
Como podemos observar utiliza los mismos parámetros que las ante-
riores instruciones y cuatro puntos (x0, y0), (x1, y1), (x2, y2), (x3, y3).
La curva comienza en el punto (x0, y0), pero es tangente a una línea
recta entre el primer punto y el segundo, luego la curva termina en
el punto (x3, y3) pero tangente a una línea imaginaria entre el tercero
y cuarto punto. Al igual que con la instrucción psarc esta también
tiene la opción showpoints para ver las líneas imaginarias, veamos un
ejemplo:
23. 22 1.5. Curvas
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psbezier[showpoints=true]{->}
(0,0)(1,3)(3,0)(4,3)
La intrucción parabola presenta la siguiente sintaxis:
parabola[par]{flechas}(x0,y0)(x1,y1)
Dibuja una parábola que comienza en el punto (x0, y0) y tiene como
máximo o mínimo el punto (x1, y1) dependiendo si el ultimo punto
esta por encima o por debajo del primer punto.
Ejemplo:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
parabola{<->}(0,0)(2,3)
parabola{>-o}(1,3)(2,0)
end{pspicture}
1.5.1. Los comandos pscurve, psecurve y psccurve
El comando psbezier y parabola sólo pueden dibujar curvas simples
con no más de 4 puntos determinados; con estas nuevas instrucciones
podemos dibujar curvas mucho más elaboradas y definidas, con la can-
tidad de puntos que necesitemos, sin embargo, es necesario tener en
24. 1. Gráficos con PSTricks 23
cuenta las siguientes opciones:
curvature= n m p
Por defecto este parámetro es de 1 0.1 0, y se utiliza para modificar
la forma de la curva, el primer valor hace la curva más firme. El se-
gundo parámetro hace que la curva se “apriete” si el ángulo formado
por los puntos es mayor a 45 grados, la curva es más suelta. El tercer
parámetro es similar al segundo, pero afecta la abertura de la curva
haciendola más o menos abierta en los vértices. Sin embargo es bueno
dejar los valores predeterminados por PSTricks.
La instrucción pscurve genera una curva abierta con los mismos parámet-
ros estudiados anteriormente. La opción showpoints muestra los puntos
de interpolación.
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
pscurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
psecurve es muy similar al anterior, pero la curva no pasan por el
primer y último punto, el algoritmo trata de unir los extremos lo mejor
posible, el siguiente ejemplo es igual al anterior pero usando psecurve.
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psecurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
25. 24 1.6. Manejo de Colores
Por último tenemos psccurve la cual es similar a pscurve pero ésta
genera una curva cerrada uniendo el primer y último punto:
0 1 2 3 4
0
1
2
3
psset{unit=2.2}
begin{pspicture}(0,0)(4,3)
malla
psccurve[showpoints=true]{<->}
(0,0)(1,2)(2,3)(3,3)(4,2)
end{pspicture}
1.6 Manejo de Colores
En PStricks se puede trabajar con los siguientes colores:
red green blue
cyan magenta yellow
PSTricks también maneja colores en escala de grises:
Negro (black), gris oscuro (darkgray), gris (gray), gris claro (lightgray),
y blanco (white)
1.6.1. Creación de nuevos colores
Además de estos colores podemos definir nuevos con las siguientes in-
strucciones: newgray y newrgbcolor
26. 1. Gráficos con PSTricks 25
newgray{color}{n}
Este comando se utiliza para generar nuevos tonos de gris, color será
el nombre de nuestro nuevo color, n es la intensidad entre 0 y 1, donde
0 es negro y blanco es 1.
newrgbcolor{color}{r g b}
Esta instrucción se usa para generar nuevos coleres con el formato
RGB (red, green y azul), color será el nombre de nuestro nuevo color
y {r,g,b} son números entre 0 y 1.
newhsbcolor
newhsbcolor{color}{h s b}
La anterior instrucción se usa para generar nuevos colores con el for-
mato HSB (hue, saturation, brightness), {color} será el nombre de
nuestro nuevo color y {h,s,b} son números entre 0 y 1.
newcmykcolor
newcmykcolor{color}{c m y k}
Esta instrucción se usa para generar nuevos colores con el formato
CMYK (Cian, magenta, yellow, black), {color}será el nombre de nue-
stro nuevo color y {c,m,y,k} son números entre 0 y 1.
Ejemplo:
27. 26 1.6. Manejo de Colores
0 1 2 3 4 5 6 7 8
-3
-2
-1
0
1
2
3
Favoritismo en los editores de texto
LATEX Word
Otros
psset{unit=2.0}
begin{pspicture}(0,-3)(8,3)malla
newgray{girisclaro}{0.9}
newrgbcolor{elcolorlatex}{0.1 0.1 1.0}
newhsbcolor{elcolorword}{0.1 0.9 1.0}
newcmykcolor{elcolorotro}{0.1 0.3 0.3 0.3}
pspolygon[linewidth=0.01,fillstyle=solid,
fillcolor=girisclaro](0.8,1.8)(0.8,2.3)
(6.3,2.3)(6.3,1.8)
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorlatex](3.7,-0.3){1.86}{53.8}{271.5}
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorword](3.7,-0.3){1.86}{347.2}{54.3}
pswedge[linewidth=0.04,fillstyle=solid,
fillcolor=elcolorotro](3.7,-0.3){1.86}{268.6}{347.0}
rput(3.6,2.0){Favoritismo en los editores de texto}
rput(2.7,0.1){LaTeX}
rput(4.6,0){Word}
rput(4.3,-1.1){Otros}
end{pspicture}
Para usuarios avanzados de PostScript, no es recomendado usar col-
28. 1. Gráficos con PSTricks 27
ores cmyk y HSB, pues en algunas ocasiones requiere de otros con-
troladores y puede generar errores al compilar. Se recomienda hacer
RGB para generar nuevos colores.
Recordemos que con el comando psset{...} podemos configurar
opciones de color y con el comando fillcolor podemos indicar que
todos los objetos creados de ahí en adelante sean dibujados con ese
color de relleno, la opción linecolor sirve para definir el color de las
lineas de contorno. Veamos el siguiente ejemplo:
0 1 2
0
1
2
psset{unit=2.0,
fillcolor=yellow,linecolor=blue}
begin{pspicture}(0,0)(2,2)
malla
psellipse(1,.5)(1,.5)
end{pspicture}
Podemos ver en el ejemplo anterior que la elipse, aunque está pintada
de contorno azul, no se rellenó de color amarillo, así que para ello,
debemos tener en cuenta los siguientes parámetros:
linewidth=n
Con este determinamos el ancho de la línea de cualquier objeto (líneas,
círculos, etc), por defecto es 8pt.
fillstyle=s
Este comando permite definir el estilo de llenado de los objetos, este
puede ser none, el cual hace que el objeto no tenga ningún relleno. La
opción solid, permite que se pueda rellenar un objeto bien sea con
un color o con una textura.
Para definir un color de llenado, se usa el comando fillcolor=c,
donde c es uno de los colores antes mencionado. Veamos un ejemplo:
29. 28 1.6. Manejo de Colores
0 1 2 3
0
1
2
3
4
5
psset{unit=1.0}
begin{pspicture}(0,0)(3,5)
malla
psellipse[fillstyle=solid,
fillcolor=lightgray,
linecolor=red](1,.5)(1,.5)
psellipse[fillstyle=solid,
fillcolor=red,
linecolor=blue](2,2)(0.5,0.5)
psframe[fillstyle=solid,
fillcolor=green,
linecolor=magenta](0,5)(1,4)
pscircle[fillstyle=solid,
fillcolor=cyan,
linecolor=green](2,4){1}
end{pspicture}
1.6.2. Texturas
Recordemos que fillstyle=s con la opción solid puede dibujar un
objeto con un relleno que puede ser un color o una textura, el cuadro
1.4 muestra las opciones para rellenado con texturas
Nombre efecto
none Es el valor por defecto, no rellena el objeto
con ningún color o textura
vlines líneas verticales con una inclinación de 45o
hlines líneas horizontales con una inclinación de
45o
crosshatch Lineas cruzadas verticales y horizontales a
45o
gradient Da al objeto una textura de degradado en-
tre dos colores
Cuadro 1.4: Texturas en PSTricks
En el siguiente ejemplo se usan los mismos objetos que en el ejemplo
anterior, pero esta vez usaremos las texturas mencionadas, excepto el
gradiente al cual dedicaremos más tiempo:
30. 1. Gráficos con PSTricks 29
0 1 2 3
0
1
2
3
4
5
psset{unit=1.0}
begin{pspicture}(0,0)(3,5)
malla
psellipse[fillstyle=vlines]
(1,.5)(1,.5)
psellipse[fillstyle=hlines]
(2,2)(0.5,0.5)
psframe[fillstyle=none]
(0,5)(1,4)
pscircle[fillstyle=crosshatch]
(2,4){1}
end{pspicture}
El cuadro 1.5 muestra otras opciones que se pueden aplicar a las tex-
turas, como cambiar el ángulo de inclinación, el color de las líneas, etc.
Nombre efecto
hatchsep Separación entre líneas, por defecto es 4pt
hatchwidth Grosor de las líneas, por defecto es 0.8pt
hatchcolor Color de las líneas, por defecto es negro
hatchangle Inclinación de las líneas
Cuadro 1.5: Parámetros adicionales para texturas
Veamos el siguiente ejemplo:
0 1 2 3
0
1
2
3
psset{unit=1.0}
begin{pspicture}(0,0)(3,3)
malla
psellipse[fillstyle=hlines,
hatchcolor=red,hatchangle=22]
(2,0.5)(0.5,0.5)
psframe[fillstyle=vlines,
hatchangle=0 ](0,1)(1,0)
pscircle[fillstyle=crosshatch,
hatchsep=2pt](1.5,2){0.5}
end{pspicture}
31. 30 1.6. Manejo de Colores
1.6.3. Degradados
Uno de los efectos más vistosos y usados de PSTricks es el degradado,
sólo necesitamos poner fillstyle=gradient y podemos obtener un
efecto de degradado lineal en dos colores:
0 1 2 3
0
1
2
3
psset{unit=1.5}
begin{pspicture}(0,0)(3,3)
malla
psframe[fillstyle=gradient]
(2.8,1)(0.2,3)
end{pspicture}
Las siguientes opciones determinan la configuración del degradado:
gradbegin=color
Es usada para escoger el color inicial del degradado, por defecto es
azul oscuro.
gradend=color
Es usada para escoger el color final del degradado, por defecto es azul
claro.
gradmidpoint=n
n debe ser un número entre 0 y 1, y se utiliza para escoger la posición
del punto intermedio del degradado.
gradangle=ang
Denota el álgulo de rotación para el degradado medido en grados, el
valor por defecto es 0.
gradlines=n
Determina el número de líneas del degradado, el valor predeterminado
es 500, mientras más líneas más fino es el efecto del degradado.
32. 1. Gráficos con PSTricks 31
El siguiente ejemplo muestra el poder de los degrados para gráficos
matemáticos:
Máquinas
Nivel de α
M1 M2 M3 M4
N1
N2
N3
N4
psset{unit=1.5}
begin{pspicture}(0,-3.5)(9.5,3.5)
psline[linewidth=0.04cm]{->}(1.6,-2.7)(1.6,2.7)
psline[linewidth=0.04cm]{->}(1.6,-2.7)(7.6,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradmidpoint=1.0](2.7,1.2)(2.1,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=red,gradend=cyan,
gradmidpoint=1.0](3.9,-0.04)(3.3,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=magenta,
gradend=yellow,gradmidpoint=1.0](5.2,1.9)(4.6,-2.7)
psframe[linewidth=0.02,fillstyle=gradient,
gradlines=2000,gradbegin=green,gradend=red,
gradmidpoint=1.0](6.4,-1.6)(5.8,-2.7)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.6,-1.6)(6.3,-1.6)
33. 32 1.7. Manejo de objetos
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.6,1.9)(5.1,1.9)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.7,0)(3.7,0)
psline[linewidth=0.03cm,linestyle=dashed,
dash=0.16cm 0.16cm](1.7,1.2)(2.4,1.2)
rput(8.6,-3.1){psframebox[linewidth=0.04]{Máquinas}}
rput(1.4,3.1){psframebox[linewidth=0.04]
{Nivel de $alpha$}}
rput(2.3,-3.1){$M_1$}
rput(3.5,-3.1){$M_2$}
rput(4.8,-3.1){$M_3$}
rput(6,-3.1){$M_4$}
rput(1.0,-1.6){$N_1$}
rput(1.0,0){$N_2$}
rput(1.0,1.2){$N_3$}
rput(1.0,1.9){$N_4$}
end{pspicture}
En PSTricks existe algo que se llama comandos estrella, los cuales dan
atributos por defecto a los objetos que vamos a dibujar, por ejemplo:
pscircle*[linestyle=dashed](1.5,1.5){1}
Como podemos ver aparece un * después de invocar el comado pscircle,
con esto le indicamos al compilador de LATEX que rellene el objeto
con el color determinado por linecolor, linewidth toma el valor de
0, fillstyle toma el valor de solid, linestyle el valor de none y
fillcolor toma el valor determinado por linecolor. Debemos tener
especial cuidado en configurar los valores anteriormente mencionados
si queremos usar los comandos estrella, pues, pueden producir una
gráfica no deseada.
1.7 Manejo de objetos
En los ejemplos anteriores hemos visto el uso de algunos comandos
como rput para ubicar objetos, tambien usamos el objeto malla que
34. 1. Gráficos con PSTricks 33
hemos creado a partir de un nuevo comando. En esta sección estudi-
aremos más a fondo el uso de estas herramientas:
1.7.1. El comando rput
Ya hemos tenido algún contacto con este comando, pues lo hemos apli-
cado en ejemplos anteriores. Veamos sus parámetros completos:
rput[P]{Ang}(x,y){Obj}
El comando ubica un objeto “obj” que puede ser un texto una tabla o
una gráfica en un punto (x, y), con el argumento P podemos cambiar
la posición en que se coloca la caja de LATEX, por defecto este valor es
[c], lo que nos indica que el objeto aparece centrado en la posición
(x, y). Además de [c] existen otros valores con los que podemos hacer
que los objetos no aparezcan en el centro, el siguiente gráfico ilustra
los demás valores:
c
tr
brbb
l r
ttl
Objeto
Caja imaginaria
Es fácil ver de donde vienen los demás valores (left, top, etc). El
parámetro ang determina el ángulo de rotación del objeto y se mide en
grados sexagesimales entre -360 y 360, sin embargo, se pueden abre-
viar algunos ángulos especiales, como los de 90, 180, etc, el cuadro 1.6
muestra las abreviaciones:
Veamos el siguiente ejemplo:
35. 34 1.7. Manejo de objetos
Ángulo letra
N 0o
L 90o
D 180o
R 270o
W −90o
S −180o
E 270o
Cuadro 1.6: Ángulos espciales
Recta Tangente
Recta Secante
Diámetro
psset{unit=1.0}
begin{pspicture}(0,-2)(5,2)
psline[linewidth=0.04cm]{<->}(1.5,1.9)(4.8,-0.1)
psline[linewidth=0.04cm]{<->}(4.6,-1.8)(0.0,-1.1)
pscircle[linewidth=0.04](2.4,-0.4){1.5}
psline[linewidth=0.04cm](2.5,1.1)(2.5,-1.9)
rput{-30.0}(3.4,1.1){Recta Tangente}
rput{-8.0}(2.6,-1.3){Recta Secante}
rput{W}(2.2,-0.3){Diámetro}
end{pspicture}
1.7.2. Resortes
Este objeto permite construir curvas en forma de resortes o zig-zags,
La estructura del comando es la siguiente:
36. 1. Gráficos con PSTricks 35
pscoil[par]{flechas}(x1,y1)(x2,y2)
El cual extiende un resorte del punto (x1, y1) hasta (x2, y2). El sigu-
iente comando permite hacer el efecto de zig-zags con los mismos
parametros:
pszigzag[par]{flechas}(x1,y1)(x2,y2)
Para configurar la apariencia de los resortes y zig-zags se tiene las op-
ciones mostradas en el cuadro 1.7.
Parámetro Efecto
coilwidth=n Amplía o reduce el ancho del resorte o zig-
zag, por defecto es 1cm.
coilheight=h Con h > 0 esta opción determina el
número de repeticiones del zig-zag o re-
sorte. Mientras más pequeño sea este valor
más repeticiones se harán.
coilArmA=n Representa la longitud del brazo que está
en el punto (x1, y1) del resorte.
coilArmB=n Es la longitud del brazo que está en el pun-
to (x2, y2) del resorte.
coilArm=n Provoca que coilArmB y coilArmA tengan
el mismo valor.
coilaspect=ang Cambia el ángulo con que se dibujan los
resortes, por defecto es 45 pero se puede
modificar 0 ≤ ang < 90, este parámetro
no afecta a los zig-zags.
coilinc=ang Por defecto es 10, y determina la suavidad
con que se dibujan los resortes, no afecta
a los zig-zags.
Cuadro 1.7: Parámetros de los resortes y zig-zags
Este ejemplo muestra la versatilidad de ambos comandos:
38. 1. Gráficos con PSTricks 37
1.7.3. Ejes coordenados
Los ejes coordenados son uno de los objetos más utilizados en la com-
posición de textos matemáticos, PSTricks tiene una herramienta lla-
mada psaxes, con la cual podemos dibujar casi cualquier tipo de eje
cordenado, veamos la sintaxis:
psaxes[par]{flechas}(x0,y0)(x1,y1)(x2,y2)
Lo anterior, permite que se dibuje un eje coordenado entre el rectán-
gulo con vértices opuestos (x1, y1) y (x2, y2) y el origen del sistema
está en (x0, y0). El comando psaxes tiene los siguientes parámetros
(cuadro 1.8)
Parámetro Efecto
labels= all es el valor por defecto y provoca que se pongan
las etiquetas de los ejes x y y, x/y dibuja la eti-
queta para el correspondiente eje y none no dibuja
ninguna etiqueta.
showorigin= false/true Con esta opción podemos hacer que
aparezca o no el origen de los ejes .
axesstyle= Por defecto es axes y hace que el eje se dibuje
con las dos líneas rectas usuales, frame dibuja un
frame o rectángulo y none no dibuja los ejes.
Ox= y Oy= Determina el número donde comienzan a numer-
arse los ejes, por defecto es 0.
Dx= y Dy= Representa el incremento entre etiquetas, por de-
fecto es 1.
dx= y dy= determina la distancia entre las marcas (ticks).
Cuadro 1.8: Parámetros de los ejes
Ejemplo:
39. 38 1.7. Manejo de objetos
0 1 2 3 4 5 6 7 8 9
1
2
3
f(x)
psset{unit=0.8}
begin{pspicture}(0,-3)(5,3)
rput(0.3,-2.1){psaxes[linewidth=0.04,
tickstyle=bottom,dx=0.5cm,dy=1.2cm]
{<->}(0,0)(5,0)(0,5)}
psbezier[linewidth=0.04]{<->}
(0.0,-1.7)(1.6,-2.9)(1.9,1.7)(4.9,0.2)
rput(5.1,0.71){$f(x)$}
psline[linewidth=0.04cm,
linestyle=dashed,
dash=0.16cm 0.16cm](3.7,0.5)(3.7,-2.1)
end{pspicture}
El cuadro 1.9 muestra la forma en que se pueden configurar los ticks
(líneas que acompañan a las etiquetas de los ejes).
Ejemplo:
40. 1. Gráficos con PSTricks 39
Parámetro Efecto
ticks= Por defecto es all y sirve para mostrar las lineas
que acompañan a los números en los ejes, si quer-
emos que aparesca solo los del eje x o y utilizamos
la opción x/y,con none se eliminan de ambos ejes.
tickstyle= Este parámetro determina la ubicación de las
líneas que acompañan a las etiquetas de los ejes.
full es el valor por defecto y hace que estas líneas
se extiendan por ambos lados de los ejes, botton
hace la misma acción al lado donde estan las eti-
quetas, y top lo hace al lado opuesto.
ticksize=n Determina la longitud de las marcas, por defecto
es 3pt.
Cuadro 1.9: Parámetros de los ticks
-3 -2 -1 0 1 2 3 4 5 6
-3
-2
-1
0
1
2
3
1 2−1−2
1
2
−1
−2
psset{unit=1.0}
begin{pspicture}(-3,-3.22)(6.0,3.22)malla
psaxes[linewidth=0.02,
arrowlength=1.4]{<->}(0,0)(-3,-3)(3,3)
pscircle[linewidth=0.04,dimen=outer](0,0){2.0}
psline[linewidth=0.04cm]{<->}(-1,3)(3.5,0)
pscircle[linewidth=0.04](3,2){1.0}
end{pspicture}
Ejemplo:
41. 40 1.7. Manejo de objetos
0 1,5 3,0 4,5 6,0 7,5 9,0
0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
psset{unit=1.0}
begin{pspicture}(0.5,0.5)(5,5.5)
psaxes[Dx=1.5,Dy=0.5]{->}(10,5)
psplot[linecolor=blue]{0}{10.5}
{x 180 mul 1.52 div cos 2 mul 2.5 add}
psplot[linecolor=red]{0}{10.5}
{x 180 mul 1.52 div sin 2 mul 2.5 add}
end{pspicture}
El la sección 1.9.1 estudiaremos la función psplot.
1.7.4. Grillas
Las grillas o mallas son un complemento ideal para trabajar con los
ejes coordenados, inclusive pueden hacer las veces de éste si asi se re-
quiere, su sintáxis es la siguiente:
psgrid[par](x1,y1)(x2,y2)
La ejecución del comando anterior produce una malla en el rectán-
gulo con extremos (x1, y1) y (x2, y2), si no ubicamos estas coorde-
nas, psgrid ubicara una malla en las coordenadas establecidas por
begin{pspicture}(x1,y1)(x2,y2) . El cuadro 1.10 muestra los difer-
entes parámetros para configurarla:
42. 1. Gráficos con PSTricks 41
Parámetro Efecto
gridwidth= n Determina el ancho de las líneas principales de
la grilla, por defecto es 0.8pt.
subgridwidth= n Igual al anterior pero con las líneas secundarias
gridcolor= color Es el color de las líneas principales, por defecto
es black.
subgridcolor= color Color de las líneas secundarias, por defecto es
gray.
gridlabels=n Tamaño de los números que enmarcan la grilla,
por defecto es 10 pt.
gridlabelcolor = color Color de los números que enmarcan la grilla,
por defecto es black.
griddots=n Las líneas principales son punteadas con n pun-
tos por unidad y n > 0.
sub griddots=n Igual al anterior pero con la grilla segundaria y
n > 0.
Cuadro 1.10: Parámetros de psgrid
Ejemplo:
0 1 2
0
1
2
-2 -1 0 1 2
-1
0
1
2
3
psset{unit=0.8}
begin{pspicture}(0,-2.8)(8.6,2.8)
rput(0.3,0.4){psgrid[gridwidth=0.02,
subgridwidth=0.01,gridlabels=6.0pt,
subgridcolor=blue](0,0)(0,0)(2,2)}
rput(6.76,-1.3) {psgrid[gridwidth=0.02,
subgridwidth=0.01,
gridlabels=5.0pt,subgriddiv=8,griddots=1,unit=1.3cm,
gridcolor=gray,subgridcolor=black](2,0)(-2,-1)(2,3)}
43. 42 1.8. Manejo de texto
end{pspicture}
{footnotesizebegin{verbatim}
1.8 Manejo de texto
El texto es una parte fundamental en la elaboración de documentos
matemáticos, PSTricks posee herramientas para la inclusión de texto
científico en nuestros libros o arctículos, ya hemos visto que lo pode-
mos hacer con el comando rput, sin embargo es posible hacer muchos
otros efectos que se pueden utilizar en presentaciones o ecuaciones muy
elaboradas.
1.8.1. El comando uput
Con este comando podemos ubicar etiquetas en nuestros gráficos, tiene
la siguiente sintáxis:
uput{s}[r]{ang}(x,y){objeto}
El parámetro s hace que la etiqueta aparezca separada del punto (x, y)
una distancia determinada, por defecto es 5pt. La opción r determina
el ángulo de la etiqueta.
Ejemplo:
0 1 2 3 4
0
1
2
3
4
3
2
1
12
11
10
9
8
7
6
5
4
psset{unit=1.5}
begin{pspicture}(0,0)(4,4)
malla
pscircle(2,2){2}
uput{2.1cm}[0](2,2){$3$}
uput{2.1cm}[30](2,2){$2$}
uput{2.1cm}[60](2,2){$1$}
uput{2.1cm}[90](2,2){$12$}
uput{2.1cm}[120](2,2){$11$}
uput{2.1cm}[150](2,2){$10$}
uput{2.1cm}[180](2,2){$9$}
44. 1. Gráficos con PSTricks 43
uput{2.1cm}[210](2,2){$8$}
uput{2.1cm}[240](2,2){$7$}
uput{2.1cm}[270](2,2){$6$}
uput{2.1cm}[300](2,2){$5$}
uput{2.1cm}[330](2,2){$4$}
pspolygon[fillstyle=solid,
fillcolor=lightgray](2,2)
(2.5,2.1)(3,2)(2.5,1.9)(2,2)
pspolygon[fillstyle=solid,
fillcolor=lightgray](2,2)
(1.5,2.2)(0.9,2.7)(1.5,2.4)(2,2)
qline(2,2)(2.5,0.5)
end{pspicture}
1.8.2. Texto en recuadros
Estos comandos son independientes de PSTricks, así mismo se pueden
usar en otros contextos. Su tamaño depende de la cantidad de texto
que se les aplique. La sintáxis es la siguiente y es igual para todas:
psframebox[par]{texto}
Las opciones par son las que estudiamos en las secciones anteriores y
texto es lo que deseamos enmarcar. El ejemplo siguiente mostrará la
sintaxis y el resultado obtenido:
0 1 2 3 4 5 6 7
0
1
2
3
4
psframebox
psdblframebox
pstribox
psdiabox
pscirclebox
psovalbox
psset{unit=1.8}
begin{pspicture}(0,0)(7,4)malla
rput[tl](0,3.5){psframebox{$backslash$psframebox}}
rput[tl](0,2.5){psdblframebox{$backslash$psdblframebox}}
rput[tl](0,1.5){pstribox{$backslash$pstribox}}
rput[tl](4,3.5){psdiabox{$backslash$psdiabox}}
rput[tl](4.5,2.5){pscirclebox{$backslash$pscirclebox}}
45. 44 1.8. Manejo de texto
rput[tl](4.5,.8){psovalbox{$backslash$psovalbox}}
end{pspicture}
1.8.2.1. Sombras
En realidad cualquier figura cerrada de PSTricks puede generar som-
bra, como los polígonos cerrados, los círculos, las cajas de texto, etc.
Para ubicar este efecto sólo se usa el parámetro shadows=true/false,
el cual, por defecto es false .
Otro parámetro que se usa es el shadowsize=n, el cual cambia el
tamaño de la sombra y por defecto es 3pt. shadowangle=ang se usa
para ubicar el ángulo de la sombra, por defecto es -45, pero se puede
usar entre -360 y 360 grados. Por último está shadowcolor=color el
cual se usa para poner color a la sombra que por defecto es darkgray.
0 1 2
0
1
2
Λ
Π
Ω Φ
psset{unit=1.5}
begin{pspicture}(0,0)(2,2)
malla
rput(1,1.5)
{pscirclebox[fillstyle=solid,
fillcolor=blue, shadow=true]
{white Huge $Lambda$}}
rput(1,0.5)
{pscirclebox[fillstyle=solid,
fillcolor=red, shadow=true,
shadowangle=45]
{white Huge $Pi$}}
rput(0.5,1)
{pscirclebox[fillstyle=solid,
fillcolor=cyan, shadow=true,
shadowcolor=yellow]
{white Huge $Omega$}}
rput(1.5,1)
{pscirclebox[fillstyle=solid,
fillcolor=magenta, shadow=true,
shadowsize=5pt]
{white Huge $Phi$}}
end{pspicture}
1.8.3. Texto sobre curvas
Para aplicar este efecto usamos la instrucción:
pstextpath[pos]{curva}{texto}
46. 1. Gráficos con PSTricks 45
El argumento pos puede tomar los siguientes valores: l para ubicar
el texto a la izquierda de la curva, [c] para ubicarlo al centro, y por
último [r] para ubicarlo a la derecha. Se puede usar cualquier curva
de PSTricks (circunferencia, polígonos, rectas, etc), para el parámetro
curva.
Ejemplo.
0 1 2 3 4
0
1
2
3
4
Un
iversid
ad
Del
Q
uindí
o
Ser
libres para con
ocer
ycon
ocer para ser l
ibres
psset{unit=1.5}
begin{pspicture}(0,0)(4,4)malla
pstextpath[c]{psarcn[linestyle=none]
(2,2){1.7cm}{180}{0}}{Huge green bf Universidad }
rput(2,2){Huge green bf Del}
pstextpath[c]{psarc[linestyle=none]
(2,2){1.7cm}{180}{0}}{Huge green bf Quindío}
pstextpath[c]{psarcn[linestyle=none]
(2,2){3.7cm}{180}{0}}{Huge blue bf
Ser libres para conocer}
pstextpath[c]{psarc[linestyle=none]
(2,2){3.7cm}{180}{0}}
{Huge blue bf y conocer para ser libres}
47. 46 1.8. Manejo de texto
end{pspicture}
Ejemplo:
0 1 2 3 4 5 6
0
1
2
Esta es la hermosa función sin(x)
psset{unit=1.8cm}
begin{pspicture}(0,0)(6,2)malla
pstextpath[c]{pscurve[linestyle=none]
(0,1.5)(1.5,0.5)(4,1.5)(6,0.5)}
{Huge Esta es la hermosa función $sin (x)$}
end{pspicture}
1.8.4. Texto con efectos especiales
Como ya hemos visto podemos agregar color, tamaño y forma al texto,
ahora con la instrucción pscharpath agregaremos efectos en el con-
torno del texto:
pscharpath[par]{texto}
Ejemplo:
pscharpath[linestyle=dashed]{ Huge Universidad del Quindío}
pscharpath[linestyle=none, fillstyle=gradient]
{ Huge Universidad del Quindío}
48. 1. Gráficos con PSTricks 47
1.9 Trazado de curvas
En la sección 1.5.1 trazamos curvas con los comandos pscurve, pse-
curve, psccurve, sin embargo, podemos tener algunas limitantes dado
que la curva resultante no necesariamente es la que debería pasar por
los puntos indicados. Para ello, PSTricks diseñó las siguientes fun-
ciones especializadas en la interpolación de puntos:
Primero debemos designar la lista de puntos que vamos a dibujar, eso
lo hacemos con el comando:
savedata{fun}[{x1,y1},...{xn,yn}]
Una vez guardados los puntos procedemos a dibujarlos, eso lo logramos
con el siguiente comando:
dataplot[par]{fun}
Con la opción fun le asignamos cualquier nombre a la lista de puntos,
siempre que no sea un comando LATEX. La función readdata hace
el mismo efecto que savedata, pero ésta lo puede leer de un archivo.
Si observamos, la gráfica no es exacta, debido a que sólo usamos 10
puntos, pero si utilizamos 100, nuestro gráfica sería muy exacta pero
consumiría más recursos del sistema. Con este comando podemos car-
gar los puntos desde un archivo y estos pueden ser tomados desde otro
programa como el Matematica.
Ejemplo:
49. 48 1.9. Trazado de curvas
0 1 2 3 4
1
2 f(x) = esin(x)
psset{unit=1}
begin{pspicture}(0,0)(5,3)
psaxes[linewidth=0.04,dx=1.8cm,
dy=1.8cm]{<->}(0,0)(5,0)(0,3)
savedata{funcion}[{0,1}, {0.36,1.43},
{0.87,2.15}, {1.51,2.71}, {2.26,2.15},
{2.76,1.43}, {3.13,1.0}, {4.06,0.46},
{4.45,0.3}, {5.032,0.38}]
dataplot[linewidth=0.01, plotstyle=curve,
linecolor=red]{funcion}
rput(3.8,2){large $f(x)=e^{sin (x)}$}
end{pspicture}
1.9.1. Curvas a partir de su ecuación
Para graficar una curva, lo ideal es tener los puntos a partir de la
ecuación, para eso PSTricks implementa la siguiente función:
psplot[op]{x1}{x2}{fun}
La cual grafica una curva con el dominio (x1, x2), la función fun debe
entrarse en notación sufija de PostScript, la cual mostraremos en el
cuadro 1.11.
Sin embargo, es necesario tener presente que siempre se debe usar la
variable x, las funciones seno y coseno sólo aceptan grados sexages-
imales. La función psplot sólo admite computos simples, por lo que
no podemos graficar funciones muy complejas. Se debe tener especial
50. 1. Gráficos con PSTricks 49
Sintáxis Significado
x neg −x
x y add x + y
x y sub x − y
x y mul x.y
x y div x
y
x y exp xy
x sqrt
√
x
x log log10 x
x ln ln x
x sin sin x
x cos cos x
Cuadro 1.11: Principales funciones de PostScript
cuidado con las funciones que presenten asíntotas, pues generan un
error (división por cero) y debemos sacarlas del dominio.
Ejemplo:
1 2 3 4−1−2−3−4
1
2
3
4
−1
−2
−3
−4
f(x) = sin(100x)
f(x) = x+1
x2+1
f(x) = ex
f(x) = 1
x
psset{unit=0.4}
begin{pspicture}(-5,-5)(8,5)%malla
51. 50 1.9. Trazado de curvas
psaxes[linewidth=0.04,dx=0.71cm,
dy=0.71cm]{<->}(0,0)(-5,-5)(5,5)
psplot[linewidth=0.03, plotstyle=curve,
linecolor=blue]{-5}{5}{x 100 mul sin}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=green]{-5}{5}{ x 1 add x 2 exp 1 add div}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=magenta]{-5}{1.5}{2.7 x exp}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=yellow]{-5}{-0.2}{1 x div}
psplot[linewidth=0.03, plotstyle=curve,
linecolor=yellow]{0.2}{5}{1 x div}
psdots[dotstyle=square*, linecolor=blue](4,4)
rput(6.2,4){$f(x)=sin (100x)$}
psdots[dotstyle=square*, linecolor=green](4,3)
rput(6,3){$f(x)=frac{x+1}{x^2 + 1}$}
psdots[dotstyle=square*, linecolor=magenta](4,-2)
rput(6,-2){$f(x)=e^x$}
psdots[dotstyle=square*, linecolor=yellow](4,-3)
rput(6,-3){$f(x)=frac{1}{x}$}
end{pspicture}
1.9.2. Curvas Paramétricas
El comando parametricplot es muy similar psplot, sólo se requiere
dar un dominio y una función paramétrica.
parametrcplot[par]{t1}{t2}{x(t)y(t)}
El parámetro par se usa para las opciones de línea que ya hemos us-
ado, (t1, t2) es el dominio de la función y las funciones x(t), y(t) las
cuales se deben escribir con la sintaxis de PostScript, una seguida de
la otra sin comas ni puntos. (vea el cuadro 1.11).
Veamos los siguientes ejemplos:
52. 1. Gráficos con PSTricks 51
-3 -2 -1 0 1 2 3
-3
-2
-1
0
1
2
3
psset{unit=2}
begin{pspicture}(-3,-3)(3,3)malla
rput(1.5,1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{2 t mul sin t cos mul
2 t mul sin t sin mul}}
rput(-2.5,1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t
cos mul 0.5 1.5 t cos mul add t sin mul}}
rput(-1.5,-2){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{0.5 1.5 t cos mul add t
sin mul 0.5 1.5 t cos mul add t cos mul}}
rput(1.5,-1.5){parametricplot[linewidth=0.1,
plotpoints=300]{0}{360}{1.5 t sin mul 1.5 t cos mul}}
end{pspicture}
1.9.3. Regiones sombreadas
Para implementar sombreado de regiones entre curvas, PSTricks dispone
de la función pscuston la cual nos permite dibujar una textura entre
dos curvas, que pueden ser psline, pscurve o psecurve, en realidad
se puede hacer sobre cualquier tipo de curva, teniendo cuidado puesto
53. 52 1.9. Trazado de curvas
que se pueden producir graves mensajes de error. Veamos la sintaxis:
pscuston[par]{curvas fill[op]}
La función rellena la región limitada por las curvas con las opciones
de llenado implementadas en fill[par].veamos un ejemplo:
0 1 2 3 4 5 6
0
1
2
3
4
5
psset{unit=0.8}
begin{pspicture}(0,0)(6,5)
pscustom[linestyle=none]
{pscurve(0,0)(2,3)
(3,3.5)(4,3)(6,0)
fill[fillstyle=solid,
fillcolor=lightgray]}
psaxes(6,4)
pscurve(0,0)(2,3)
(3,3.5)(4,3)(6,0)
end{pspicture}
Veamos un ejemplo de relleno entre dos curvas:
0 1 2 3 4 5
0
1
2
3
4
5
6
psset{unit=0.6}
begin{pspicture}(0,0)(6,7)
pscustom[linestyle=none]{
psline(1,0.1)(1,1.5)
pscurve(1,1.5)(2,2.5)(3,4)(4,6)
psline(4,6)(4,0.5)
psline(4,0.5)(0,0)
fill[fillstyle=vlines ]}
psaxes{->}(6,7)
pscurve(0,1)(1,1.5)(2,2.5)
(3,4)(4,6)(4.5,6.5)
psline(4,0.5)(0,0)
psline(4,0.5)(5,0.65)
psline[linestyle=dashed]
(1,0.1)(1,1.5)
psline[linestyle=dashed]
(4,0.5)(4,6)
end{pspicture}
En el ejemplo anterior podemos observar los siguientes detalles:
54. 1. Gráficos con PSTricks 53
• En primer lugar, los puntos de las curvas deben seguir una
secuencia, en este caso primero se ubica la línea recta verti-
cal psline(1,0.1)(1,1.5), luego aparece la curva (que es la
más importante); pscurve(1,1.5)(2,2.5)(3,4)(4,6), poste-
riormente la otra recta vertical; psline(4,6)(4,0.5) y por úl-
timo la recta psline(4,0.5)(0,0), que hace las veces de curva
inferior, que en otros casos puede ser otra curva o el mismo eje
x;
• Luego de dibujar la región sombreada, podemos redibujar las
curvas e inclusive agregarles más detalles, como por ejemplo hac-
erlas más largas o asignarles etiquetas.
Ejemplo:
0 1 2 3 4−1−2−3−4
2
3
4
5
6
psset{unit=0.6}
begin{pspicture}(-4,0)(4,5)
pscustom[linestyle=none]{
psline(-3,1)(-3,3)
pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3)
psline(3,3)(3,1)
pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1)
fill[fillstyle=solid, fillcolor=lightgray]}
psaxes[linewidth=0.04,Oy=1](0,0)(-4,0)(4,5)
psline[linestyle=dashed](-3,0)(-3,3)
psline[linestyle=dashed](3,3)(3,0)
pscurve(-3,3)(-2,1.5)(-1,2)(0,4)(1,2)(2,1.5)(3,3)
pscurve(3,1)(2,0.5)(1,0.8)(0,0)(-1,0.8)(-2,0.5)(-3,1)
end{pspicture}
55. 54 1.10. Herramientas para árboles, grafos y diagramas
1.10 Herramientas para árboles, grafos y dia-
gramas
PSTricks ofrece una variada gama de herramientas para crear gráficos
tipo árboles y diagramas. Para realizar este tipo de gráficos se han
dividido los comandos en 3 tipos; Nodos, Conectores y Etiquetas.
1.10.1. Nodos
En el cuadro 1.12 observaremos los distintos tipos de nodos:
Nodo Descripción
pnode(x,y){nom} Con él ubicamos en la coordenada (x, y) un
nodo y le asignamos un nombre con nom
dotnode[op](x,y){nom} Este nodo es similar al anterior, pero el
nodo aparece con forma de punto y se le
asigna un nombre con nom . Además que
se puede agregar opciones de puntos como
las vistas en la cuadro 1.2
cnode[op](x,y){r}{nom} En este caso, el nodo es de forma circular
con un radio r.
Cnode[op](x,y){nom} Es similar al anterior, pero el radio se
establece de antemano con el parámetro
psset{radius=...}.
rnode{nom}{texto} En este caso se dibuja un borde rectangu-
lar invisible, y se tiene la posibilidad de
agregar texto, que puede ser en modo nor-
mal o modo matemático. Este comando no
tiene el característico punto (x, y), así que
debemos usar el comando rput para ubi-
carlo.
Cuadro 1.12: Nodos de PSTricks
La tabla 1.13 muestra otros tipos de nodos similares a rnode con
formas geométricas:
1.10.2. Conectores
A continuacion mostraremos los diferentes tipos de conectores con su
respectivo ejemplo, tanto del nodo como de su conector:
56. 1. Gráficos con PSTricks 55
Nodo Descripción
trinode[op]{nom}{texto} Nodo en forma triangular.
ovalnode[op]{nom}{texto} Nodo en forma ovalada.
dianode[op]{nom}{texto} Nodo en forma de rombo.
circlenode[op]{nom}{texto} Nodo en forma circular.
Cuadro 1.13: Nodos tipo rnode de PSTricks
Conectores ncline.
La estructura básica de un conector es la siguiente:
ncline[par]{flechas}{n1}{n2}
Con los parámetros par podemos cambiar la forma del conector (líneas
punteadas, guiones, etc), el segundo parámetro es el tipo de flechas y
los dos últimos son el nombre de los conectores, en este caso el conector
va de n1 a n2.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1 a2
psset{unit=0.5}
begin{pspicture}(0,0)(6,4)
malla
rput(3,3){circlenode{P1}{$P_t$}}
rput(1,1){circlenode{a1}{$a_1$}}
rput(5,1){circlenode{a2}{$a_2$}}
ncline{->}{P1}{a1}
ncline{<-}{P1}{a2}
ncline{<->}{a1}{a2}
end{pspicture}
Conectores ncarc.
Es similar al anterior, pero los nodos se unen por medio de arcos. El
usuario debe tener en cuenta que los arcos se construyen como un
parámetro arcangle, el cual determina el ángulo entre arco y la línea
recta que une los nodos, su valor por defecto es 8 grados sexagesimales.
57. 56 1.10. Herramientas para árboles, grafos y diagramas
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(1,4){circlenode{P1}{$P_t$}}
rput(1,1){trinode{a1}{$a_1$}}
rput(5,3){ovalnode{a2}{$a_2$}}
ncarc[arcangle=250]{<->}{P1}{a1}
ncarc{<-}{P1}{a2}
ncarc{<->}{a1}{a2}
end{pspicture}
Conectores ncdiag.
En este caso se une los nodos con un segmento diagonal, además se
pueden usar las opciones armA,armB, con los cuales se puede cambiar
la longitud del brazo de salida y de llegada, que por defecto es 10pt.
angleA,angleB, son los ángulos de llegada y salida del conector y su
valor por defecto es 0. Igualmente, podemos usar la opción linearc
que se utiliza para vértices redondeados.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(2,4){dianode{P1}{$P_t$}}
rput(2,1){dianode{a1}{$a_1$}}
rput(5,4){dianode{a2}{$a_2$}}
ncdiag[armA=15pt, armB=15pt,
angleA=45,angleB=90]{<->}{P1}{a2}
ncdiag[angleA=270,angleB=270]
{<->}{a2}{P1}
ncdiag[angleA=180,angleB=180,
linearc=10pt]{<->}{a1}{P1}
end{pspicture}
Conectores ncdiagg.
Es igual al anterior, pero sin el brazo para el segundo nodo.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(1,4){dianode{P1}{$P_t$}}
rput(3,1){dianode{a1}{$a_1$}}
rput(5,4){dianode{a2}{$a_2$}}
ncdiagg[angleA=0,angleB=90]{->}
{P1}{a2}
ncdiagg[angleA=180,angleB=180,
linearc=10pt]{->}{a1}{P1}
end{pspicture}
58. 1. Gráficos con PSTricks 57
Conectores nccurve.
Este conector traza curvas en forma de Bézier, se debe tener cuidado
en la posición de los nodos, pues si están ubicados muy cerca, la curva
parecerá una recta.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(2,4){dianode{P1}{$P_t$}}
rput(1,1){trinode{a1}{$a_1$}}
rput(6,3){ovalnode{a2}{$a_2$}}
nccurve[angleA=45,angleB=90]
{<->}{P1}{a2}
nccurve[angleA=270,angleB=270]
{<->}{a2}{P1}
nccurve[angleA=180,angleB=180]
{<->}{a1}{P1}
end{pspicture}
Conectores ncbar.
Este conector tiene la particularidad de que forma ángulos rectos entre
los conectores y los nodos, si es necesario se extienden los brazos de
los conectores, además el ángulo de llegada y el de salida son el mismo
y se controlan con el parámetro angleA.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(2,4){dianode{P1}{$P_t$}}
rput(5,1){trinode{a1}{$a_1$}}
rput(6,3){ovalnode{a2}{$a_2$}}
ncbar[angleA=90]{<->}{P1}{a2}
ncbar[angleA=270]{<->}{a2}{P1}
ncbar[angleA=180]{<->}{a1}{P1}
end{pspicture}
Conectores ncangle.
Es similar al anterior, pero los conectores se unen por medio de ángulos
rectos únicamente. Para controlar la forma, se usan los parámetros
armA,armB,angleA,angleB y linearc.
59. 58 1.10. Herramientas para árboles, grafos y diagramas
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(3,4){dianode{P1}{$P_t$}}
rput(5,1){dianode{a1}{$a_1$}}
rput(1,2){dianode{a2}{$a_2$}}
ncangle[angleA=180, angleB=180]
{->}{P1}{a2}
ncangle[angleA=270, angleB=270]
{<->}{a2}{a1}
ncangle[angleA=0, angleB=270]
{<->}{a2}{P1}
ncangle[angleA=90, angleB=0]
{<->}{a1}{P1}
end{pspicture}
Conectores ncangles.
Tiene el mismo efecto que ncangle , pero usa un segmento adicional
para unir los nodos.
0 1 2 3 4
0
1
2
3
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(4,3)malla
rput(1,1){dianode{a1}{$a_1$}}
rput(3,2){dianode{a2}{$a_2$}}
ncangles[angleA=180,
angleB=180]{->}{a1}{a2}
ncangles[angleA=90,
angleB=0]{<->}{a2}{a1}
end{pspicture}
Conectores ncloop.
Este conector es útil para hacer loops en grafos, se puede cambiar el
parámetro loopsize que por omisión es 1cm. Para este tipo de gráfico
es mejor usar nccircle.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)malla
rput(3,4){ovalnode{P1}{$P_t$}}
rput(5,1){ovalnode{a1}{$a_1$}}
rput(1,2){ovalnode{a2}{$a_2$}}
ncloop[angleA=0, angleB=45,
loopsize=1cm,
linearc=0.1]{->}{a1}{a1}
ncloop[angleA=90, angleB=0,
linearc=0.1]{->}{P1}{P1}
60. 1. Gráficos con PSTricks 59
nccurve[angleA=270,
angleB=270]{<->}{a2}{a1}
nccurve[angleA=0,
angleB=270]{<->}{a2}{P1}
nccurve[angleA=90,
angleB=0]{<->}{a1}{P1}
end{pspicture}
Conectores nccircle.
Además de la sintaxis normal de los conectores, en el caso de nccircle
se debe adicionar un parámetro más que corresponde al radio del loop.
La separación entre el arco y el borde del nodo se puede determinar
por el parámetro nodesepA.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(3,4){ovalnode{P1}{$P_t$}}
rput(5,1){ovalnode{a1}{$a_1$}}
rput(1,2){ovalnode{a2}{$a_2$}}
nccircle[angleA=200,
nodesepA=0pt ]{->}{a1}{0.4cm}
nccircle[angleA=90,
nodesepA=0pt ]{->}{a2}{0.5cm}
nccircle[angleA=10,
nodesepA=0pt ]{->}{P1}{0.5cm}
nccurve[angleA=0,
angleB=180]{<->}{a2}{a1}
nccurve[angleA=90,
angleB=270]{<->}{a2}{P1}
nccurve[angleA=90,
angleB=270]{<->}{a1}{P1}
end{pspicture}
1.10.3. Etiquetas
Las etiquetas se le asignan a los conectores de los diagramas, deben
ubicarse después de construir el conector, y se asume que el conector
va de izquierda a derecha.
La tabla 1.14 muestra otros tipos de nodos similares a rnode con for-
mas geométricas:
Aquí mostraremos los tipos de etiquetas y los parámetros opcionales
como nrot . En el siguiente ejemplo ubicamos etiquetas con el parámetro
npos, que es un número entre 0 y 1 y determina donde aparece la
etiqueta. El comando * provoca que la etiqueta borre los objetos que
están debajo de ella, en caso contrario, la etiqueta será transparente.
61. 60 1.10. Herramientas para árboles, grafos y diagramas
Etiqueta Descripción
ncput[op]{etiqueta} La etiqueta va sobre la línea del
conector.
naput[op]{etiqueta} La etiqueta va encima del conector.
nbput[op]{etiqueta} La etiqueta va debajo del conector.
tvput[op]{etiqueta} La etiqueta va en la misma linea del
conector. Se usa en conectores verti-
cales.
tlput[op]{etiqueta} Igual a la anterior solo que la etiqueta
se ubica a la izquierda del conector.
tlput[op]{etiqueta} En este caso la etiqueta se ubica a la
derecha del conector.
Cuadro 1.14: Etiquetas para conectores en PSTricks
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1
a2
α1
β2
γ3
begin{multicols}{2}
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(1,2.5){ovalnode{P1}
{$P_t$}}rput(5,1){ovalnode{a1}
{$a_1$}}rput(5,4)
{ovalnode{a2}{$a_2$}}
nccurve[angleA=0, angleB=0]{<->}
{a2}{a1}ncput*{$alpha_1$}
nccurve[angleA=90, angleB=0]
{<->}{a2}{P1}
ncput*[npos=0.5]{$beta_2$}
nccurve[angleA=270, angleB=0]
{<->}{a1}{P1}
ncput*[npos=0.7]{$gamma_3$}
end{pspicture}
En el siguiente ejemplo se usará la etiqueta naput y nbput con
el parámetro labelsep, la cual nos determina la separación entre el
conector y la etiqueta, por defecto es 0.5pt.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pt
a1 a2
ξ
λ
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(3.5,4){dianode{P1}{$P_t$}}
rput(1,2){dianode{a1}{$a_1$}}
rput(4,2){dianode{a2}{$a_2$}}
ncbar[angleA=0, angleB=180]
{->}{P1}{a2}
62. 1. Gráficos con PSTricks 61
naput[labelsep=0.3pt]{$xi$}
ncbar[angleA=90]{->}
{a1}{a2}nbput{$lambda$}
end{pspicture}
Para el siguiente caso, usaremos la etiqueta tvput con el parámetro
nrot, el cual determina la rotación de la misma con un ángulo entre
-360 y 360 grados sexagesimales, por defecto dicho parámetro es cero.
0 1 2 3 4 5 6
0
1
2
3
4
5
Pta1
a2
ξ
incorrecto
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(5,1){ovalnode{P1}{$P_t$}}
rput(1,1){ovalnode{a1}{$a_1$}}
rput(5,4){ovalnode{a2}{$a_2$}}
ncline{->}{P1}{a2}tvput{$xi$}
ncline{->}{a1}{a2}
naput*[nrot=35]{incorrecto }
end{pspicture}
Ahora veremos las etiquetas tlput, trput.
0 1 2 3 4 5 6
0
1
2
3
4
5
P1
a1 a2
P2ξ
ψ ϕ
psset{unit=0.6}
begin{pspicture}(0,0)(6,5)
malla
rput(1,4)
{dianode{P1}{$P_1$}}
rput(1,1)
{ovalnode{a1}{$a_1$}}
rput(5,1)
{ovalnode{a2}{$a_2$}}
rput(5,4)
{dianode{P2}{$P_2$}}
ncline{->}
{P1}{P2}ncput*{$xi$}
ncline{->}
{P1}{a1}tlput{$psi$}
ncline{->}
{P2}{a2}trput{$varphi$}
end{pspicture}
1.10.4. Árboles
La sintaxis de un árbol es la siguiente:
pstree[par]{raiz}{ramas}
63. 62 1.10. Herramientas para árboles, grafos y diagramas
Para implementar un gráfico de árbol debemos tener en cuenta la ubi-
cación de la raíz y las ramas, además la forma de ubicar los conectores.
El cuadro 1.15 ilustrará los tipos de nodos.
Nodo Descripción
Tp[op] Nodo invisible.
Tdot[op] Nodo en forma de punto.
Tf[op] Nodo en forma de cuadro.
Tfan[op] Nono invisible conectado a su nodo prede-
cesor por una figura triangular.
Tc[op]{r} Nodo circular con radio r.
TC[op] Igual al anterior pero el radio se establece
por defecto con el parámetro radius en el
psset{...}. Por omisión es 2.5mm
Tr[op]{texto} Nodo rectangular invisible con texto.
Tcircle[op]{texto} Nodo circular con texto.
Toval[op]{texto} Nodo ovalado con texto.
Ttri[op]{texto} Nodo triangular con texto.
Tdia[op]{texto} Nodo en forma de rombo con texto.
Tn[op]{texto} Nodo con texto pero conectado a su prede-
cesor por una línea invisible. Sólo se puede
usar en las hojas del árbol no en su raíz.
Cuadro 1.15: Nodos para los árboles en PSTricks
Para el manejo de árboles, se debe tener especial cuidado con la ubi-
cacion de hojas y subarboles. Al implementarlos, nos damos cuenta
que es fácil caer en erorres por la ubicacón incorrecta de los nodos.
0 1 2 3 4 5 6
0
1
2
3
4
5
6
h
psset{unit=0.6}
begin{pspicture}(0,0)(6,6)
rput[tl](1.5,5.5)
{pstree{TC}{Tdia{$h$}
Tdot pstree{TC}{Tc{1mm}
Ttri{} }} }
64. 1. Gráficos con PSTricks 63
Además de los tipos de nodos, podemos controlar la forma en que
se crea el árbol, por ejemplo, si queremos que nuestro árbol sea de
derecha a izquierda o de abajo hacia arriba, etc, sólo cambiamos las
opciones que se muestran en el cuadro 1.16.
Nodo Descripción
treemode= Determina la dirección del árbol,
Dconstruye el árbol hacia abajo, U lo
construye hacia arriba, R y L derecha e
izquierda.
edge= Determina el tipo de conector (ncline,
ncarc,etc ) .
nodesep= Es la distancia entre el nodo y el conector,
por defecto es 0pt.
levelsep= Determina la distancia entre los niveles de
un árbol, por defecto es 2cm.
treesep= Me indica la distancia entre los descendi-
entes de un mismo nodo, por defecto es
0.75cm.
Cuadro 1.16: Parámetros para el trazado de árboles
C
R
Q
Z
N
I
psset{unit=0.6}
begin{pspicture}(0,0)(6,6)
rput[tl](1.5,5.5)
{pstree[levelsep=1cm,
arrows=->]{Tcircle{$mathbb{C}$}}
{ pstree{Tcircle{$mathbb{R}$}}
{pstree{Tcircle{$mathbb{Q}$}}
{pstree{Tcircle{$mathbb{Z}$}}
{Tcircle{$mathbb{N}$} } }
Tcircle{$mathbb{I}$}} }}
end{pspicture}
En este caso mostraremos que una gráfica hecha con PSTricks se puede
poner en el entorno figure como si fuésemos a cargar un archivo
gráfico. Para el caso el árbol genealógico de los hijos de Borin.1.
1
J.R.R. Tolkien, Apéndices del Señor de los Anillos. Ediciones Minotauro. 2001
65. 64 1.10. Herramientas para árboles, grafos y diagramas
Borin Farin
Fundin I
Balin
Dawlin
Gróin
Óin
Glóin Gimli
Figura 1.1: Genealogía de los hijos de Borin
66. 1. Gráficos con PSTricks 65
begin{figure}[htbp]
centering psset{unit=1.2}
begin{pspicture}(0,-6)(13,6)
rput[tl](0.5,5.5){pstree[edge=nccurve,
angleB=180, treemode=R,treesep=2.5cm, arrows=->]
{ Toval{scriptsize Borin} }{
pstree{Toval{scriptsize Farin} }
{pstree{Toval{scriptsize Fundin I}}
{Toval{scriptsize Balin} Toval{scriptsize Dawlin} }
pstree{Toval{scriptsize Gróin}}{Toval{scriptsize Óin}
pstree{
Toval{scriptsize Glóin}}{Toval{scriptsize Gimli}}}}}}
end{pspicture}
caption{Genealogía de los hijos de Borin }
label{hijosborin}
end{figure}
1.10.4.1. Etiquetas para los nodos de los árboles
Las etiquetas de los conectores del árbol se ubican exactamente de-
spués del comando de cada nodo, su sintaxis es muy simple ~{etiqueta}.
El parámetro tnpos= posiciona la etiqueta con relación al nodo. b es
abajo (por defecto es b), a arriba y r y l son derecha e izquierda. Con
tnsep= podemos cambiar la distancia entre el nodo y la etiqueta, por
defecto es 5pt. Las etiquetas para los conectores se colocan inmedi-
atamente después del primer nodo, con el comando naput, es decir, si
tenemos dos nodos A y B, se ubicará después del nodo A.
Ejemplo:2
2
J.R.R. Tolkien, El Silmarrillion. Ediciones Minotauro. 2001
67. 66 1.11. Manejo de objetos 3D con PSTricks
Elfos
Eldar
Calaquedi
Fueron a Amán
Vanyar
Los hermosos
Noldor
Los Sabios
Telerin
Los Elfos del mar
Avari
Moriquendi
No fueron a Amán
psset{unit=0.6}
begin{pspicture}(0,-6)(13,6)
pstree[treemode=R,levelsep=3.8cm,treesep=2.5,arrows=->]
{Toval{scriptsize Elfos}}{
pstree{Toval[tnpos=a]{scriptsize Eldar}
~{ textit{ scriptsize Calaquedi}}naput[nrot=:U]
{tiny Fueron a Amán} }{Toval[tnpos=b]
{scriptsize Vanyar}~{ textit{
scriptsize Los hermosos}}
Toval[tnpos=b]{scriptsize Noldor}
~{ textit{ scriptsize Los Sabios}}
Toval[tnpos=b]{scriptsize Telerin}
~{textit{ scriptsize Los Elfos del mar}}}
Toval[tnpos=b]{scriptsize Avari}~{ textit{
scriptsize Moriquendi}}naput[nrot=:U]{tiny No fueron a Amán}}
end{pspicture}
1.11 Manejo de objetos 3D con PSTricks
PSTricks ofrece toda una librería para dibujar objetos tridimensionales
como esferas, planos, vectores, superficies, etc. Para el manejo de esta
68. 1. Gráficos con PSTricks 67
librería es necesario que el usuario esté familiarizado con los conceptos
de Cálculo Multivariado, es decir, con la ubicación de puntos en el
espacio, manejo de ecuaciones en R3 y otros conceptos.
1.11.1. El paquete pst-3dplot
Con este paquete, podemos usar los comandos necesarios para dibujar
los objetos 3D, además, se pueden incluir otros objetos matemáticos
como ecuaciones y objetos 2D. Si usted no tiene este paquete, lo pude
conseguir en la siguiente direccción:
http://ctan.org/tex-archive/
graphics/pstricks/contrib/pst-3dplot/
1.11.2. El eje cordenado 3D
El eje coordenado de la librería es el mismo que podemos encontrar
en cualquier libro de Cálculo, con el eje z perpendicular al eje y y al
eje x:
x y
z
Sin embargo, para acceder a este espacio necesitamos un punto de
referencia o punto de visión, imaginemos que estamos parados junto
al eje coordenado; estando allí podemos dar la vuelta, subir y bajar
69. 68 1.11. Manejo de objetos 3D con PSTricks
la mirada, levantar el eje coordenado para observar los objetos desde
abajo, en fin, necesitamos mover la vista para visualizar mejor los ob-
jetos que vamos a dibujar.
Para resolver el problema, PSTricks toma como punto de partida 2
ángulos especiales α y β. El ángulo α representa la rotación horizontal
con valores positivos en sentido antihorario. El ángulo β controla la
rotación vertical u ortogonal del plano. Por defecto, los ángulos son
α = 45 y β = 45, si queremos cambiar el punto de vista del plano,
cambiamos los parámetros en el psset{...}.veamos el ejemplo:
x y
z
x
y
z
x
y
z
psset{unit=1.0}
begin{pspicture}(0,-1)(13,5)
rput(3,2){pstThreeDCoor[Alpha=45, Beta=45,
linecolor=red,xMax=3,yMax=3,zMax=3]}
rput(8,2){pstThreeDCoor[Alpha=-60, Beta=10,
linecolor=green,xMax=4,yMax=3,zMax=3]}
rput(11,2){pstThreeDCoor[Alpha=45, Beta=50,
linecolor=blue,xMax=4,yMax=3,zMax=3]}
end{pspicture}
En en ejemplo anterior, podemos ver que se pueden cambiar algunos
parámetros, entre ellos esta xMin, xMax, yMin, yMax, zMin, zMax, los
cuales determinan los límites de los ejes con *Min le damos el límite
inferior y con *Max configuramos el límite superior. También podemos
cambiar el ancho de las líneas o su forma. Debemos tener en cuen-
ta donde ubicamos los parámetros Alpha y Beta, si lo hacemos en el
psset todos los objetos rotarán al unísono con el eje, si lo hacemos
en los parámetros de pstThreeDCoor, sólo los ejes rotarán, los demás
70. 1. Gráficos con PSTricks 69
objetos no.
1.11.3. Ubicación de objetos con pstThreeDPut
Este comando es muy similar a rput de la versión 2D, a continuación
la sintaxis:
pstThreeDPut[par](x,y,z){obj}
Esta orden ubica en la posición (x, y, z) el objeto obj con diferentes
opciones, las cuales mostraremos en los diferentes ejemplos.
x y
z
̟2
ξ1
ζ1
psset{unit=1.0}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3]
pstThreeDPut(1,2,3){$varpi_2$}
pstThreeDPut(2,0,3){$xi_1$}
pstThreeDPut(3,3,0){$zeta_1$}
end{pspicture}
1.11.4. Puntos
Como ya es sabido, los puntos son de los objetos matemáticos más
usados, PSTricks3D implementa la siguiente función:
pstThreeDDot[par](x,y,z)
El comando ubica un punto con coordenadas (x, y, z) con las opciones
de colores que ya hemos visto, además del parámetro drawCoor que
71. 70 1.11. Manejo de objetos 3D con PSTricks
puede ser falsetrue , lo cual provoca que se dibujen las líneas par-
alelas a los ejes. Veamos un ejemplo:
x
y
z
psset{unit=1.0, Alpha=80}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[linecolor=red,xMax=4,yMax=4,zMax=3]
pstThreeDDot[drawCoor=true](1,1,2)
pstThreeDDot[drawCoor=true](0,-2,1)
pstThreeDDot[drawCoor=true](4,2,-0.5)
end{pspicture}
1.11.5. Líneas rectas
La sintaxis para una línea en el espacio tridimensional es la siguiente:
pstThreeDLine[par](x1,y1,z1)(x2,y2,z2)
La cual dibuja una recta del punto (x1, y1, z1) al punto (x2, y2, z2), las
opciones son las típicas que hemos visto en la versión 2D.
Ejemplo:
72. 1. Gráficos con PSTricks 71
x y
z
v1 v2
v3
psset{unit=1.0, Alpha=45, Beta=45}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(1,2,5)
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(-3,2,0)
pstThreeDLine[linewidth=2pt,
linecolor=blue, arrows=->](0,0,0)(4,0,3)
rput(-2,0.5){$vec{v}_1$}
rput(1.5,0.5){$vec{v}_2$}
rput(1,2){$vec{v}_3$}
end{pspicture}
Como podemos observar, hemos usado el comando rput, en lugar de
la versión 3D, si usted no conoce la ubicación de los puntos en 3D, lo
puede hacer con la versión 2D sin ningún problema.
1.11.6. Triángulos
Para dibujar triángulos, PSTricks3D implementa el siguiente comando:
pstThreeDTriangle[par](P1)(P2)(P3)
El parámetro drawCoor que puede ser falsetrue dibuja las rectas
paralelas a los ejes, fillstyle debe estar en solid para que el trián-
gulo sea llenado, de lo contrario, se dibujará transparente. El color se
escoje con fillcolor . Los parámetros P1,P2,P3 son los puntos de
los vértices del triángulo.
73. 72 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=45}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDTriangle[linewidth=1pt](3,-1,5)(1,1,5)(1,2,5)
pstThreeDTriangle[drawCoor=true,linecolor=blue,
linewidth=1pt, fillstyle=solid, fillcolor=yellow]
(3,1,2)(1,4,2)(0,2,2)
pstThreeDTriangle[drawCoor=true,linecolor=red,
linewidth=1pt, fillstyle=solid, fillcolor=green]
(3,0,4)(1,0,1)(0,0,2)
end{pspicture}
1.11.7. Cuadros y rectángulos
La sintaxis es la siguiente:
pstThreeDSquare[Op](v1)(v2)(v3)
En este caso, se dibuja un cubo o paralelepípedo imaginario, luego
aparecen los vectores v1, v2 y v3. El primer vector determina el pun-
to de origen del cuadro, los otros dos determinan el ancho y largo del
cuadro. Estos vectores en realidad son los puntos finales de los vectores.
Ejemplo:
74. 1. Gráficos con PSTricks 73
x y
z
psset{unit=1.0, Alpha=45, Beta=15}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDSquare[fillcolor=blue,fillstyle=solid,
drawCoor=true,dotstyle=*](1,1,3)(0,3,0)(1,0,0)
pstThreeDSquare[fillcolor=green,fillstyle=solid,
drawCoor=true,dotstyle=*](1,1,1)(4,0,0)(0,5,0)
end{pspicture}
1.11.8. Cajas
Una caja es un caso especial de los Cuadros de la sección anterior, la
sintaxis es la siguiente:
pstThreeDBox[par](v1)(v2)(v3)(v4)
El primer punto (punto final de un vector) es el punto de inicio de
nuestra caja, los demás vectores determinan el ancho, el alto y la pro-
fundidad.
Ejemplo:
75. 74 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=15}
begin{pspicture}(-6,-3)(6,3)
pstThreeDCoor[xMax=4,yMax=4,zMax=3]
pstThreeDBox[fillcolor=yellow,
fillstyle=solid](0,0,0)(3,0,0)(0,3,0)(0,0,1)
end{pspicture}
1.11.9. Circunferencias y elipses
En el siguiente gráfico podemos observar los componentes de una
elipse:
a
b
F2
F1
a a
e
e
r1 r2
Ahora bien, lo que tenemos es: dos focos F1 y F2, los diámetros a y b
y además la exentricidad determinada por e.
(x − x0)2
a2
+
(y − y0)2
b2
= 1 (1.1)
76. 1. Gráficos con PSTricks 75
La ecuación 1.1 es la fórmula generalizada de una elipse con centro
en (x0, y0), eje mayor a y eje menor b, (también llamados radios de
la elipse).La exentricidad e determina que tan alargada o deforme es
la elipse y debe ser 0 < e ≤ 1, si e = 1 la elipse se convierte en
una circunferencia. La información anterior es de vital importancia si
necesitamos dibujar elipses o circunferencias.
Además, de esta información, podemos cambiar algunos parámetros
de la elipse como el arco, permitiendo dibujar parte de la elipse o cir-
cunferencia, esto lo logramos cambiando los parámetros que controlan
el ángulo de inicio y el terminal; beginAngle que por defecto es 0 y
endAngle que es 360, éstos valores indican que se dibujará toda la
elipse.
Recuerde que como estamos en el espacio tridimensional, es muy común
que veamos una circunferencia como una elipse o viceversa, es re-
comendable que se ajusten los parámetros de visión (Alpha y Beta)
para que ésta distorsión no cause malos entendidos.
la elipse entonces tiene la siguiente sintáxis:
pstThreeDEllipse[OP](cx,cy,cz)(ux,uy,uz)(vx,vy,vz)
El primer punto (cx, cy, cz) es el extremo de un vector c, este punto
será el centro de nuestra elipse, en la ecuacion 1.1 serían (x0, y0). El
punto (ux, uy, uz) y (vx, vy, vz) son los extremos de los vectores que
me indicarán los valores de a y b.
Ejemplo:
77. 76 1.11. Manejo de objetos 3D con PSTricks
x y
z
psset{unit=1.0, Alpha=45, Beta=25}
begin{pspicture}(-4,-3)(4,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,0)(3,0,0)(0,2,0)
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,0.5)(2.5,0,0)(0,1.5,0)
pstThreeDEllipse[linecolor=blue,
linewidth=1.5pt](0,0,1)(2,0,0)(0,1,0)
pstThreeDEllipse[beginAngle=0,endAngle=180,
linecolor=green](0,0,2)(1,0,0)(0,1,0)
pstThreeDEllipse[beginAngle=180,endAngle=360,
linecolor=magenta](0,0,2)(1,0,0)(0,1,0)
end{pspicture}
Observe que la última elipse en realidad son dos semicircunferencias,
una verde y la otra magenta, la perspectiva provoca que se vean como
elipses.
1.11.10. Esferas
La sintaxis es la siguiente:
pstThreeDSphere[OP](x,y,z){r}
78. 1. Gráficos con PSTricks 77
EL comando dibuja una esfera con centro en el punto (x, y, z) y de
radio r, las opciones son las antes estudiadas.
x y
z
psset{unit=0.8, Alpha=45, Beta=25}
begin{pspicture}(-4,-3)(4,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
pstThreeDSphere[linewidth=0,
linecolor=green](0,0,2){0.8}
pstThreeDSphere[linewidth=0,
linecolor=blue](2,0,0){0.8}
pstThreeDSphere[linewidth=0,
linecolor=blue](0,2,0){0.8}
end{pspicture}
1.11.11. Curvas paraméntricas en 3D
PSTricks implementa la siguiente función:
parametricplotThreeD[par](t1,t2)(u1,u2){x(t,u)
y(t,u) z(t,u)}
Sólo es posible usar las variables u y t. Los parámetros t1, t2 son los
límites de t, u1, u2 son los límites inferior y superior de u. Recuerde que
x(t, u), y(t, u) y z(t, u) se deben ingresar en la notación PostScript
como lo vimos en la sección 1.9.1.
79. 78 1.11. Manejo de objetos 3D con PSTricks
Ejemplo:
x y
z
psset{unit=0.8, Alpha=45, Beta=25}
begin{pspicture}(-4,-2)(4,4)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,3.2){
t 360 mul cos t mul
t 360 mul sin t mul t}
end{pspicture}
Ejemplo:
80. 1. Gráficos con PSTricks 79
x y
z
psset{unit=2.6, Alpha=45, Beta=25}
begin{pspicture}(-2,-2)(2,3)
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,
yMax=2,zMax=3, arrows=<->]
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,360)(0,360){
u sin t cos mul
u sin t sin mul
u cos}
parametricplotThreeD[linecolor=blue,
linewidth=.25pt,xPlotpoints=200,
plotstyle=curve,arrows=->](0,360)(0,360){
t sin u cos mul
t sin u sin mul
t cos}
end{pspicture}
81. 80 1.11. Manejo de objetos 3D con PSTricks
1.11.12. Gráfica de funciones
Para graficar funciones en el espacio, PSTricks implementa la función:
psplotThreeD[OP](x0,xt)(y0,yt){f(x,y)}
La funcion, recuerden, debe estar en lenguaje PostScript , sólo se
admiten variables x y y. El comando dibuja la gráfica de la función
f(x, y) en el dominio determinado por (x0, xt) para x y (y0, yt) para la
variable y. Además, se debe tener encuenta los siguientes parámetros
(ver cuadro 1.17 ).
Opción Valor
plotstyle Puede ser dots, line, polygon, curve,
ecurve, ccurve, none (valor por defecto).
y determina la forma de las líneas con que
se dibujá la curva.
showpoints Puede ser false/true y por omisión es
false. Muestra los puntos.
showpoints Puede ser false/true y por omisión es
false. Muestra los puntos.
xPlotpoints y yPlotpoints Por defecto es 25, y determina la cantidad
de puntos a graficar.
hiddenLine Por defecto es false y hace que se dibujen
las líneas.
Cuadro 1.17: Opciones de la función psplotThreeD
Ejemplo:
psset{unit=1.5, Alpha=45, Beta=20}
begin{pspicture}(-3,-1.5)(6,5.5)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt]
(-1.5,1.5)(-1.5,1.5)
{
x 2 exp y 2 exp add x 5 div sub
}
82. 1. Gráficos con PSTricks 81
rput[tl](2,2){$f(x,y)=x^2 + y^2 - frac{x}{5}$ }
end{pspicture}
x y
z
f(x, y) = x2 + y2 − x
5
Recuerde que usted tiene el control sobre el dominio de las variables x
y y, no sobre la variable z, tenga presente este detalle pues su gráfica
puede salir de la zona delimitada.
Ejemplo:
83. 82 1.11. Manejo de objetos 3D con PSTricks
x y
z
f(x, y) = cos(100x) − sin(100y)
psset{unit=1.5, Alpha=45, Beta=30}
begin{pspicture}(-3,-1.5)(3,4)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt,
hiddenLine=true](-2,2)(-2,2)
{
x 100 mul cos y 100 mul sin sub
}
rput[tl](-2,3.5){$f(x,y)=cos (100x) - sin (100y) $ }
end{pspicture}
Ejemplo:
84. 1. Gráficos con PSTricks 83
x y
z
f(x, y) = sin2
(180x)
psset{unit=1.0, Alpha=45, Beta=30}
begin{pspicture}(-3,-2)(3,3)
pstThreeDCoor[xMin=-4,xMax=4,yMin=-4,
yMax=4,zMax=3, arrows=<->]
psplotThreeD[plotstyle=ecurve,linecolor=blue,
yPlotpoints=40,xPlotpoints=30, linewidth=0.5pt,
hiddenLine=true](-2,2)(-2,2)
{
x 180 mul sin 2 exp
}
rput[tl](-3,2.5){$f(x,y)=sin ^2 (180x) $ }
end{pspicture}
Ejemplo:
85. 84 1.11. Manejo de objetos 3D con PSTricks
x
y
z
f(x, y) = y2 − x2
psset{unit=1.0, Alpha=60, Beta=30}
begin{pspicture}(-3,-2)(3,3)
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=60,xPlotpoints=60, linewidth=0.5pt,
hiddenLine=true, showpoints=true](-1.3,1.3)(-1.3,1.3)
{
y 2 exp x 2 exp sub
}
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2, yMax=2,zMax=3, arrows=<->]
rput[tl](-3,2.5){$f(x,y)=y^2-x^2$ }
end{pspicture}
Ejemplo:
86. 1. Gráficos con PSTricks 85
x
y
z
f(x, y) = 1 − x2 + y2
1
3
psset{unit=1.0, Alpha=60, Beta=30}
begin{pspicture}(-3,-2)(3,3)
psplotThreeD[plotstyle=line,linecolor=blue,
yPlotpoints=60,xPlotpoints=60,
linewidth=0.5pt, hiddenLine=true,
showpoints=true](-1.3,1.3)(-1.3,1.3)
{
1 x 2 exp y 2 exp add 1 3 div exp sub
}
pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,
yMax=2,zMax=1.5, arrows=<->]
rput[tl](-3,2.5){$f(x,y)=1-left(x^2 +y^2
right)^{frac{1}{3}}$ }
end{pspicture}
90. 2. Herramientas para gráficos con PSTricks 89
2.1.1. Ventanas
JpicEdt tiene 3 ventanas principales, la primera de ella es la de trabajo.
En la parte superior de esta ventana, aparecen varios menús desple-
gables, el primero de ellos permite cambiar la malla o cuadrícula del
área de trabajo, luego aparece un botón para activar o desactivar el
“magnetismo de la malla”, es decir, la forma en como los objetos se
acomodan e los vértices de la malla del área de trabajo. Luego aparece
otro menú desplegable para cambiar la intensidad del magnetismo de
la malla, la cual va de 10 a 0.625; ésta es muy importante para la
construcción de nuestros gráficos matemáticos.
En la parte media de la ventana, se encuentra el área de trabajo, el
cual, esta enmarcado con una malla, en la parte superior e izquierda
se encuentra la regla, una utilidad para medir o referenciar nuestros
gráficos. En la parte inferior izquierda aparece una etiqueta donde se
resalta la posición del mouse sobre el área de trabajo.
Luego aparece la ventana de atributos, la cual, me permite cambiar
las propiedades o atributos de los objetos que se construyan.
91. 90 2.1. JpicEdt
La ventana consta de ocho submenus: Lleno, Rayar, Trazo, Som-
bra, Flechas, Polydots, Text y una opción llamada PSTricks.
Lleno: Con esta opción, podemos
escojer el color de relleno de los
objeto cerrados, es decir, figuras
planas cerradas (círculos, elipses,
polígonos). La ventana muestra
las opciones de colores en paletas
RGB, HSB y colores predefinidos
por PSTricks.
Además, tiene un menú desplegable que permite escojer el tipo de
textura o relleno para nuestros objetos, las opciones que maneja son:
transparente (por defecto), solido, líneas verticales transparentes, líneas
verticales con color de fondo, líneas horizontales transparentes y con
fondo, y dos opciones para trama en forma de ladrillo con fondo trans-
parente y con color de fondo.
Como hemos visto, no debemos preocuparnos por el código en PSTricks
para la inclusión de nuevos colores, JpicEdt lo hace automaticamente,
Además la ventana cuenta con una opción de color reciente, que le
permite al usuario seguir trabajando con los mismos colores.
92. 2. Herramientas para gráficos con PSTricks 91
Rayar: Esta opción permite cam-
biar las formas de las texturas que
se impusieron a los objetos en la
opción de lleno. Tiene tres op-
ciones, la primera, puesta en la
parte superior izquierda, permite
cambiar el ancho de las líneas de
las texturas; si estas son muy an-
chas, se puede obtener un color
sólido.
La segunda opción permite cambiar la separación entre las líneas de
la textura y la última opción modifica el ángulo de inclinación de las
líneas. En la parte inferior se presenta un menú de colores similar a
la pestaña anterior donde se pueden escoger colores de la forma RGB,
HSB y predeterminado por PSTricks.
Trazo: En esta pestaña, encon-
tramos las opciones para el en-
torno de los objetos. Inicialmente
aparece un menu desplegable que
me permite selecionar la forma del
contorno, puede ser invisible, nor-
mal, en guiones y punteada. En la
parte superior derecha aparece la
opción de ancho de la línea.
Los dos comandos en la zona media, son usados para ajustar la sepa-
ración entre los guiones y el ancho de los mismos. Tambien, allí aparece
la opción para la líneas punteadas, con este comando se pueden cam-
biar la separación de los puntos. La opción Overstrike hace que las
líneas pierdan la capacidad de ser transparentes.
Sombra: Esta opción permite aplicarle el efecto de sombra a los ob-
jetos planos cerrados (polígonos, círculos, etc)
93. 92 2.1. JpicEdt
Sólo tiene dos parámetros, el primero modifica el ancho de la sombra
y el segundo el ángulo donde esta se va a proyectar.
Flechas: Permite implementar el
efecto de flechas a las líneas con
las mismas opciones que aparecen
en la sección 1.3.1.1. La pestaña
ofrece la posibilidad de cambiar
el tipo de flecha al comienzo y
al final de la línea, la forma y el
tamaño de la misma.
Polydots: Esta pestaña permite
activar los puntos de una curva
o una línea recta, la pestaña pre-
senta un menú desplegable con
los tipos de puntos dados por
PSTricks. Las diferentes opciones
de esta pestaña permiten cambiar
el ángulo de los puntos, tamaño y
escala.
Text: Para los efectos de texto,
la pestaña ofrece la posibilidad de
cambiar el punto de referencia de
la etiqueta con el texto,
permitiendo ponerla en la parte inferior, superior, izquierda o derecha,
además, permite cambiar el ángulo de rotación del texto. La pestaña
tambien incluye una herramienta para enmarcar el texto en rectángu-
los o círculos.
94. 2. Herramientas para gráficos con PSTricks 93
PSTricks: En esta pestaña pode-
mos incluir opciones de PSTricks
que el software no maneja, sólo
debemos escribirlas en el espacio
de PS custom y oprimir el botón
aceptar.
2.1.2. Herramientas de edición
La ventana de “Caja de útiles”
presenta las herramientas de edi-
ción básicas para contruir nue-
stros gráficos matemáticos. Inici-
amlente, esta ventana la encon-
traremos junto a las que apare-
cen por omisión cuando el progra-
ma arranca, si no es el caso, vaya
al menú Útiles y allí encontrará
las mismas opciones. Tambien la
podemos encontrar en el menú
Ventanas/Caja de útiles.
Para el manejo de estas herramietas, se debe tener en cuenta que los
objetos a modificarse deben estar seleccionados. En realidad, cualquier
persona que haya tenido contacto con programas como FreeHand o
CorelDraw no tendrá dificultad en manejarlo. Enseguida, mostraremos
el uso de las diferentes herramientas de edición.
95. 94 2.1. JpicEdt
Permite hacer zoom en la gráfica que estamos
construyendo.
Selecciona los objetos que componen la gráfica.
Permite editar los nodos que componen las curvas
Bezier.
Al seleccionar uno o varios obejto, podemos moverlos
con este comando.
Escala los objetos seleccionados, bien sea en forma
vertical u horizontal.
Rota los objetos seleccionados.
Permite la inclusión de texto. Si es texto científico,
recuerde ponerlo entre los comandos “$”
Permite crear líneas rectas.
Herramienta para crear rectángulos.
Herramienta para crear paralelogramos.
Permite construir curvas bezier, el fin de la curva se
logra haciendo clic derecho.
Igual a la anterior, pero la curva bezier es cerrada
96. 2. Herramientas para gráficos con PSTricks 95
Herramienta para la creación de elipses y
circunferencias.
Comando para crear “tortas” o secciones de círculos.
Esta herramienta es similar a la anterior, pero el arco
se une por una cuerda.
Tambien es similar a la anterior, pero sin la cuerda.
Esta herramieta se llama herramienta cerrada, pero
su diferencia consiste en imprimir a la elipse el efecto
de perspectiva.
Torta con efecto de perspectiva.
Arco y cuerda con efecto de perspectiva.
Arco sin cuerda con efecto de perspectiva.
Circunferencia determinada por tres puntos, los
cuales estan sobre la circunferencia.
Torta determinada por tres puntos.
Arco con cuerda determinada por tres puntos.
Arco sin cuerda determinada por tres puntos.
97. 96 2.1. JpicEdt
Curva poligonal abierta “Smood”
Curva poligonal cerrada “Smood”
Curva de interpolación abierta
Curva de interpolación cerrada
Edición de puntos de anclaje para ampliar o
disminuir el tamaño.
2.1.3. Preferencias y configuración
JpicEdt puede ser configurado desde la ventana de preferencias, la
cual, se localiza en el menú Editar/Preferencias; esta opción abre
un menu con los siguientes items.
General: Esta pestaña permite configurar la apariencia de las ven-
tanas, el estilo de estas, así como el idioma; que puede
ser, inglés, francés, español y alemán. Tambien aparece
la fuente y el formato por defecto en que se exportará el
código, recuerde que puede ser PSTricks, emulated LATEX
y Epic/Eepic.
Apariencia: En este item aparecen cinco cajas de chequeado, para
configurar la forma en que apareceran las figuras dibujadas
en el área de trabajo, entre ellas están: Anti-alising, Anti-
alising de texto, Calidad (vs velocidad), Dither Colours y
usar métrica fraccional.
Plantilla/Zoom: La opción permite configurar las opciones del tamaño
de la malla, así como el estilo de la malla (sólido o en
puntos). Tambien se puede configurar la imantación de la
malla y el Zoom.
Colores: Esta pestaña sólo presenta dos items, el color de fondo del
escritorio del programa y el color de la malla.
98. 2. Herramientas para gráficos con PSTricks 97
Repertorios: Esta opción permite configurar las rutas del la carpeta
de archivos temporales y la carpeta de inicio de JpicEdt, la
cual, es necesaria para los archivos temporales que utiliza
el programa.
Shortcuts: La pestaña presenta una lista con los Shortcuts de las
diferentes opciones, menús y herramientas.
Comandos: La opción presenta campos para la configuración de las
rutas de acceso al compilador de LATEX y al programa Yap.
Esto debido a que JpicEdt puede compilar el documento
hecho y ver un previo de su dibujo.
Formato de página Permite configurar las márgenes de la zona de
trabajo.
LATEX Opción que permite configurar algunos parámetros esen-
ciales de PSTricks, además, JpicEdt crea un documento
TEX temporal, el cual puede ser configurado desde esta
pestaña.
Epic/Eepic y PSTrics Estas dos pestañas son muy similares a la
anterior, permiten configurar el archivo temporal que se
compilará, LATEX , Epic/Eepic y PSTrics tienen paquetes
diferentes y pueden ser modificados o actualizados desde
esta pestaña.
2.1.4. Otras herramientas de JpicEdt
Además de las mencionadas, JpicEdt tiene otras utilidades que pueden
ahorrar gran trabajo a los usuarios de PStricks. Inicialmente en los
menús fragmentos/electricity y fragmentos/mechanic se encuen-
tran macros especializados para esa área, en el primero podemos en-
contrar macros como el and, or, capacitor, trancistor y voltage entre
otros. Mientras que en el segundo menú, encontramos dos opciones:
Frame-oxy y shock absorber. A continuación veremos un ejemplo de
estos macros.
99. 98 2.1. JpicEdt
I
&
+
−
≥ 1
= 1
R
O
y
x
f
&
≥ 1
Otra de la herramientas y tal vez la más llamativa para los matemáti-
cos, es la posibilidad de graficar curvas de ecuaciones. En el menú
Scrips/math se encuentran tres opciones para hacer este tipo de grá-
ficos, la primera de ellas es add curve la cual, despliega la siguiente
ventana:
Ésta permite incluir una o más curvas en R2. JpicEdt no usa el co-
mando psplot para graficar las curvas, el programa usa la misma
ecuación para encontrar los puntos que la componen y luego crear una
curva bezier que emule la curva original. Como podemos apreciar en
la ventana aparece la opción step, la cual, permite ajustar el incre-
mento en el eje x para obtener los puntos necesarios al crear la curva,
100. 2. Herramientas para gráficos con PSTricks 99
si ponemos este parámetro muy grande la curva se vera defectuosa, si
el incremento es muy pequeño la curva se verá más fina pero será más
pesada para el computador.
Tomemos la gráfica de las funciones f y g.
f(x) = sin(x) y g(x) = cos(x)
La función f la graficaremos con la herramienta de JpicEdt y g la
graficaremos usando PSTricks puro.
Con JpicEdt tenemos
0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 5,5 6,0 6,5 7,0 7,5 8,0 8,5 9,0 9,5
−0,8
−0,6
−0,4
−0,2
−0,0
0,2
0,4
0,6
0,8
x
y
sin(x)
Como vemos, la curva se presenta con una excelente calidad, sólo debe-
mos incluir la ecuación de la curva y cambiar los parámetros de colores,
tipos de línea de la curva y oprimir el botón add this curve y listo,
la gráfica se crea automáticamente en la zona de trabajo, inclusive,
ubica en la parte superior derecha una etiqueta con la ecuación y ad-
hiere efectos de sombra.
Ahora lo haremos con PSTriks puro para la función g(x) = cos(x),
usaremos el comando psplot
101. 100 2.1. JpicEdt
g(x) = cos(x)
1 2 3 4 5 6
Como podemos ver, la gráfica de f y g son muy similares en calidad,
sin embargo, la gráfica de g toma mucho más tiempo en hacerla que
la de f, pues el usuario debe hacer uso de los comandos apropiados
para adecuarla al documento, cambiar el color, los tamaños de letra,
etc. Mientras que en la gráfica de f teniamos una agradable interface
tipo Windows y el tiempo en configurar y hacerla fue mínimo.
Ahora comparemos los códigos, en este caso, PSTriks puro sólo usa
7 líneas de código, mientras que la hecha por JpicEdt1 usa unas 120
líneas. Veamos el código en PStricks puro.
begin{pspicture}(-1,-1)(6.5,1)
rput(2,1){$g(x)=cos (x)$}
footnotesize
psaxes[linewidth=0.02]{<->}(0,0)(-1,-1)(6.5,1)
psplot[linewidth=0.04,linecolor=blue]{0}{6.2}
{ x 50 mul cos }
end{pspicture}
Además de esta herramienta, JpicEdt tiene en el mismo menú, otra
muy similar a la anterior llamada plot funtion, la cual, hace el mis-
mo proceso pero con una gráfica más sencilla y con parámetros más
simples.
1
Recordemos que JpicEdt exporta en código PSTricks, lo que queremos indicar
es que el código hecho por el programa es más extenso.