-
Notifications
You must be signed in to change notification settings - Fork 20
/
05_funcion_par.Rmd
203 lines (137 loc) · 11.5 KB
/
05_funcion_par.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# Función `par` {#par}
En este capítulo se presentan las posibilidades que ofrece la función `par` para la elaboración de gráficos. La función `par` tiene `r length(par())` parámetros y a continuación se muestran.
```{r, eval=F}
par(xlog, ylog, adj, ann, ask, bg, bty, cex, cex.axis, cex.lab,
cex.main, cex.sub, cin, col, col.axis, col.lab, col.main,
col.sub, cra, crt, csi, cxy, din, err, family, fg, fig, fin,
font, font.axis, font.lab, font.main, font.sub, lab, las,
lend, lheight, ljoin, lmitre, lty, lwd, mai, mar, mex, mfcol,
mfg, mfrow, mgp, mkh, new, oma, omd, omi, page, pch, pin,
plt, ps, pty, smo, srt, tck, tcl, usr, xaxp, xaxs, xaxt, xpd,
yaxp, yaxs, yaxt, ylbias)
```
Para conocer los valores que tienen por defecto cada uno de estos parámetros se puede utilizar el siguiente código.
```{r, eval=F}
par()
```
Al ejecutar el código anterior se obtendrá una lista con `r length(par())` objetos en la cual se tendrán los valores que cada uno de los parámetros asume inicialmente en una sesión de R. Luego de modificar uno o alguno de los parámetros de la función `par`, todos los gráficos que se construyan de ahí en adelante estarán afectados por el cambio realizado.
```{block2, type='rmdnote'}
Una buena práctica para retornar a los valores iniciales del objeto `par()` es cerrar la ventana gráfica.
```
La utilidad de cada uno de los parámetros para personalizar los gráficos se mostrará por medio de ejemplos.
## Parámetro `ann` \index{nombre de los ejes} \index{ann}
Este parámetro sirve para indicar si se quiere un gráfico con nombres en los ejes y título principal, por defecto asume el valor `TRUE`.
### Ejemplo {-}
Dibujar la densidad para una distribución $\chi^2_1$ usando `ann=FALSE` dentro de la función `par`.
El código necesario para obtener la figura se muestra a continuación. Note que a pesar de haber solicitado título principal y nombres de los ejes, éstos no aparecen en el resultado final porque se usó antes `par(ann=FALSE)`. En la Figura \@ref(fig:ann) se muestra el gráfico solicitado.
```{r ann, fig.cap='Efecto del parámetro `ann`.', fig.asp=0.8, fig.width=4}
par(ann=FALSE)
curve(dchisq(x, df=1), col='salmon1', lwd=4,
main='Chi cuadrada',
xlab='x', ylab='Densidad')
```
```{block2, type='rmdnote'}
La opción `ann=FALSE` es muy útil para gráficos sin nombres en los ejes y sin título principal. Esta opción evita el uso de `xlab='', ylab='', main=''` dentro de las funciones gráficas.
```
## Parámetro `adj` \index{justitificación del texto} \index{adj}
Este parámetro sirve para modificar la justificación del texto cuando se usan las funciones `text`, `mtext` y `title`. Su valor por defecto es 0.5 que indica que el texto debe quedar centrado en las coordenadas x e y indicadas, un valor de 0 significa justificación a izquierda mientras que 1 significa justificación a derecha.
### Ejemplo {-}
Dibujar un gráfico vacío, ubicar las palabra _hola mi mundo_ horizontalmente en el gráfico y explorar el efecto del parámetro `adj`.
El código necesario para obtener lo solicitado se muestra a continuación. Se agregaron líneas a trazos de color azul para indicar el sitio exacto donde se quería el texto. Observando la Figura \@ref(fig:adj) se nota claramente que cuando `adj=0.5` la palabra queda centrada mientras que con otros valores cambia la justificación del texto.
```{r adj, fig.cap='Efecto del parámetro `adj`.', fig.asp=0.6, fig.width=8}
plot(NULL, xlim=c(0, 0.6), ylim=c(0, 1))
par(adj=0) # Para justificar a izquierda
text(x=0.1, y=0.6, 'hola', cex=3)
par(adj=0.5) # Para justificar centrado
text(x=0.3, y=0.6, 'mi', cex=3)
par(adj=1) # Para justificar a derecha
text(x=0.5, y=0.6, 'mundo', cex=3)
abline(h=0.6, v=c(0.1, 0.3, 0.5),
lty=3, col='deepskyblue3')
```
## Parámetro `bg` \index{color del fondo} \index{bg}
Este parámetro sirve para modificar el color del fondo donde se va a dibujar.
### Ejemplo {-}
Dibujar la densidad de una normal estándar usando un color verde para el fondo.
A continuación el código necesario para modficar el color del fondo. En esta [página](http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf) se puede encontrar una paleta de colores disponibles en R. En la Figura \@ref(fig:bg) se muestra el resultado, el color de fondo está por toda la ventana gráfica.
```{r bg, fig.cap='Efecto del parámetro `bg`.', fig.asp=0.8, fig.width=4}
par(bg='darkseagreen1')
curve(dnorm, lwd=6, col='blue', xlim=c(-4, 4))
```
## Parámetro `mfrow` \index{partición ventana gráfica} \index{mfrow}
Este parámetro sirve para dividir la ventana gráfica en forma de matriz para almacenar en cada celda un gráfico diferente. La forma para modificar este parámetro es `mfrow=c(nf, nc)`, donde `nf` es el número de filas y `nc` el número de columnas en las cuales se va a dividir la ventana gráfica.
### Ejemplo {-}
Dibujar la distribución de probabilidad para una distribución Poisson con $\lambda=1, 3, 7, 15$.
Note que el objetivo es repetir el mismo gráfico para 4 valores diferentes del paramétro $\lambda$, por lo tanto se escribirá una sola vez el código de interés pero se repetirá automáticamente 4 veces para cada valor de $\lambda$. Para construir el gráfico solicitado iniciamos partiendo la ventana gráfica en una matriz de $2 \times 2$ usando `par(mfrow=c(2, 2))`. Luego se construye el vector `lambdas` con los valores de $\lambda$ y por último se coloca el `plot` de interés dentro de una sentencia `for`. Abajo el código utilizado.
```{r mfrow, fig.cap='Efecto del parámetro `mfrow`.', fig.asp=0.8, fig.width=7}
par(mfrow=c(2, 2))
lambdas <- c(1, 3, 7, 15)
for (i in 1:4) {
plot(dpois(x=0:30, lambda=lambdas[i]), lwd=4,
type='h', xlab='x', ylab='Probabilidad')
title(bquote(~ lambda == .(lambdas[i])))
}
```
En la Figura \@ref(fig:mfrow) se muestra la distribución de probabilidad para cada uno de los 4 valores de $\lambda$ en la misma figura.
```{block2, type='rmdnote'}
La función `bquote` sirve para construir mensajes que sean una mezcla de texto, expresiones matemáticas y valores de un objeto.
```
## Parámetro `bty` \index{tipo de caja} \index{bty}
Este parámetro sirve para modficar la caja alrededor del gráfico construído. Los posibles valores para este parámetro son: `'o'` valor por defecto para obtener la caja usual; se pueden usar también los símboloes `'l'`, `'7'`, `'c'`, `'u'` o `']'`, el resultado será una caja con la forma del símbolo; se puede usar `'n'` para suprimir la caja.
### Ejemplo {-}
Dibujar la densidad de una $\chi^2_5$ modificando el parámetro `bty` de `par`.
A continuación el código para dibujar la misma densidad 4 veces modificando el valor para `bty`. En la Figura \@ref(fig:par2) se muestra el efecto que tienen los valores elegidos. Observe que, además de los ejes, hay una caja cuya forma depende el valor seleccionado, cuando `bty='u'` el resultado es una caja con esa misma forma.
```{r par2, fig.cap='Efecto del parámetro `bty`.', fig.asp=0.9, fig.width=5}
par(bty='n', mfrow=c(2, 2))
curve(dchisq(x, df=5), xlim=c(0, 20))
title("Usando bty='n'")
par(bty='o')
curve(dchisq(x, df=5), xlim=c(0, 20))
title("Usando bty='o'")
par(bty='u')
curve(dchisq(x, df=5), xlim=c(0, 20))
title("Usando bty='u'")
par(bty='l')
curve(dchisq(x, df=5), xlim=c(0, 20))
title("Usando bty='l'")
```
## Parámetro `cex` \index{tamaño de símbolos} \index{cex}
Este parámetro sirve para modificar el tamaño de los símbolos, nombres de los ejes, marcas de los ejes y títulos. El valor por defecto es `cex=1`, valores mayores a uno generan gráficos con símbolos, títulos y marcas grandes, incluso desproporcionados; valores pequeños de este parámetro permiten obtener mejores figuras. A continuación un ejemplo para ver el efecto que tiene este parámetro sobre las figuras obtenidas.
### Ejemplo {-}
Hacer un gráfico de dispersión sencillo para explorar el efecto del parámetro `cex`.
Se construirá un gráfico de dispersión dos veces, en la primera con parámetro `cex=1` y en la segunda ocasión usando `cex=0.6`. Abajo el código utilizado. En el pánel izquierdo de la Figura \@ref(fig:cex) está el diagrama de dispersión obtenido con `cex=1.4` mientras que el de la derecha fue obtenido con `cex=0.6`. Observe cómo se modificaron los nombres de los ejes, título principal, marcas de los ejes y tamaño del símbolo.
```{r cex, fig.cap='Efecto del parámetro `cex`.', fig.asp=0.5, fig.width=8}
x <- -3:3
par(mfrow=c(1, 2), cex=1.4)
plot(x=x, y=x, main='Usando \n cex=1.4')
par(cex=0.6)
plot(x=x, y=x, main='Usando \n cex=0.6')
```
El parámetro `cex` tiene un efecto importante en las figuras, se recomienda al usuario que cada vez que construya una figura explore diferentes opciones para obtener una figura que exprese la esencia de lo que desea comunicar.
## Parámetros `cex.axis`, `cex.lab`, `cex.main` y `cex.sub` \index{cex.axis} \index{cex.lab} \index{cex.main} \index{cex.sub}
Los parámetros `cex.axis`, `cex.lab`, `cex.main` y `cex.sub` sirven para modificar el tamaño de las marcas en los ejes, el tamaño de los nombres de los ejes, el tamaño del título principal y el tamaño del subtítulo respectivamente. El parámetro `cex` explicado en la sección anterior, modifica el tamaño de los anteriores elementos simultáneamente mientras que los parámetros explicados en esta sección modifican cada uno de los elementos por aparte.
### Ejemplo {-}
Hacer un gráfico cualquiera y modificar los parámetros `cex.axis`, `cex.lab`, `cex.main` y `cex.sub` de la función `par` con el objetivo de ver el efecto que ellos tiene sobre el gráfico.
A continuación se construye un gráfico simple y se modifican todos los paramétros `cex.algo` para ver el efecto que ellos tienen sobre el gráfico resultante, abajo el código usado.
En la Figura \@ref(fig:cexs) se muestra el resultado. Observe que las marcas y números en los ejes quedaron grandes debido a que se usó `cex.axis=1.8`, los nombres que identifican los ejes casi no se ven porque se usó `cex.lab=0.3`. El título principal quedó muy pequeño debido a que `cex.main=0.7` mientras que el subtítulo quedó demasiado grande porque se usó `cex.sub=2`. Este ejemplo muestra que el usuario tiene todo el control para construir gráficos personalizados en R.
```{r cexs, fig.cap='Efecto de los parámetros `cex.axis`, `cex.lab`, `cex.main` y `cex.sub`.', fig.asp=0.7, fig.width=6}
x <- -3:3
par(cex.axis=1.8, cex.lab=0.3, cex.main=0.7, cex.sub=2.0)
plot(x=x, y=x,
xlab='Valores de x', ylab='Valores de y',
main='Título principal',
sub='Subtítulo')
```
## Parámetro `col`, `col.axis`, `col.lab`, `col.main` y `col.sub` \index{color} \index{col}
Estos parámetros sirven para definir el color a usar en los ejes, en los nombres de los ejes, en el título y en el subtítulo.
### Ejemplo {-}
Hacer un gráfico cualquiera y modificar los parámetros `col`, `col.axis`, `col.lab`, `col.main` y `col.sub` de la función `par` con el objetivo de ver el efecto que ellos tiene sobre el gráfico.
A continuación se construye un gráfico simple y se modifican todos los paramétros para ver el efecto que ellos tienen sobre el gráfico resultante, abajo el código usado.
```{r cols, fig.cap='Efecto de los parámetros `col`, `col.axis`, `col.lab`, `col.main` y `col.sub`.', fig.asp=1, fig.width=4}
par(col='blue', col.axis='red', col.lab='orange',
col.main='darkgreen', col.sub='purple', bty='n')
plot(1:10, pch=20, cex=2, las=1,
main='Título', xlab='Nombre eje X',
ylab='Nombre eje Y', sub='Subtítulo')
```
En la Figura \@ref(fig:cols) se muestra el efecto de los parámetros `col`, `col.axis`, `col.lab`, `col.main` y `col.sub` de la función `par`.