Creación de Gráficos con R
Creación de Gráficos con R
Grficos con R
ndice general
ndice de cuadros
ndice de figuras
VII
Prefacio
IX
XIII
1. Introduccin
1.1. Orgenes . . . . . . . . . . . . . . . . .
1.2. Descarga e instalacin . . . . . . . . . .
1.3. Apariencia del programa . . . . . . . .
1.4. Tipos de objetos . . . . . . . . . . . . .
1.4.1. Vectores . . . . . . . . . . . . . .
1.4.2. Matrices . . . . . . . . . . . . . .
1.4.3. Arreglos . . . . . . . . . . . . . .
1.4.4. Marco de datos . . . . . . . . . .
1.4.5. Listas . . . . . . . . . . . . . . .
1.5. Gua de estilo para la escritura en R . .
1.5.1. Nombres de los archivos . . . . .
1.5.2. Nombres de los objetos . . . . .
1.5.3. Longitud de una lnea de cdigo
1.5.4. Espacios . . . . . . . . . . . . . .
1.5.5. Asignacin . . . . . . . . . . . .
1.5.6. Punto y coma . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
3
4
5
6
6
7
8
9
9
9
10
10
12
12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
16
18
22
25
variables cuantitativas
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
31
31
34
38
iii
iv
Contents
3.4. Funcin contour
. . . . . . . . . . . . . . . . . . . . . . . .
46
47
47
54
5. Funcin par
5.1. Funcin par
57
57
. . . . . . . . . . . . . . . . . . . . . . . . . . .
6. Funciones auxiliares
6.1. Funcin abline .
6.2. Funcin legend .
6.3. Funcin text . .
6.4. Funcin lines . .
6.5. Funcin points .
6.6. Funcin identify
6.7. Funcin locator
6.8. Funcin axes . .
6.9. Funcin title . .
6.10. Funcin mtext . .
6.11. Funcin curve . .
6.12. Funcin rug . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
59
59
60
60
60
60
60
60
60
60
60
60
60
7. Funciones geomtricas
7.1. Funcin arrows . .
7.2. Funcin segments
7.3. Funcin rect . . .
7.4. Funcin polygon .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
61
61
61
61
.
.
.
.
.
Apndice
63
A. More to Say
63
Bibliografa
65
ndice alfabtico
67
ndice de cuadros
ndice de figuras
2
2
3
3
4
4
18
33
21
23
24
25
27
28
29
34
35
vii
viii
ndice de figuras
36
37
38
40
41
42
43
45
46
48
49
51
51
52
53
55
Prefacio
Este libro fue creado con la intencin de ayudar a los estudiantes de pregrado,
especializacin, maestra e investigadores a crear grficos estadsticos con las
herramientas bsicas de R. Como complemento, recomendamos a los lectores
el libro Hernndez (2018) que muestra cmo usar R para realizar diversos
procedimiento estadsticos.
Prefacio
[1]
5 25 30
1
9 10
Bloques informativos
En varias partes del libro usaremos bloques informativos para resaltar algn
aspecto importante. Abajo se encuentra un ejemplo de los bloques y su significado.
Este bloque sirve para una nota aclaratoria.
Prefacio
xi
Agradecimientos
Agradecemos a nuestros estudiantes, profesores y colegas que han ledo el
manuscrito y se han tomado el trabajo de escribirnos dndonos sus sugerencias
y comentarios para mejorar continuamente este material.
Juan Carlos Correa Morales
Freddy Hernndez Barajas
1 [Link]
2 [Link]
xiii
1
Introduccin
1.1.
Orgenes
R es un lenguaje de programacin usado para realizar procedimientos estadsticos y grficos de alto nivel, este lenguaje fue creado en 1993 por los profesores
e investigadores Robert Gentleman y Ross Ihaka. Inicialmente el lenguaje se
us para apoyar los cursos que tenan a su cargo los profesores, pero luego de
ver la utilidad de la herramienta desarrollada, decidieron colocar copias de R
en StatLib. A partir de 1995 el cdigo fuente de R est disponible bajo licencia GNU GPL para sistemas operativos Windows, Macintosh y distribuciones
Unix/Linux. La comunidad de usuarios de R en el mundo es muy grande y los
usuarios cuentan con diferentes espacios para interactuar, a continuacin una
lista no exhaustiva de los sitios ms populares relacionados con R:
Rbloggers1 .
Comunidad hispana de R2 .
Nabble3 .
Foro en portugus4 .
Stackoverflow5 .
Cross Validated6 .
R-Help Mailing List7 .
Revolutions8 .
R-statistics blog9 .
RDataMining10 .
1 [Link]
2 [Link]
3 [Link]
4 [Link]
5 [Link]
6 [Link]
7 [Link]
8 [Link]
9 [Link]
10 [Link]
1 Introduccin
1.2.
Descarga e instalacin
Para realizar la instalacin de R usted debe visitar la pgina del CRAN (Comprehensive R Archive Network) disponible en este enlace11 . Una vez ingrese
a la pgina encontrar un cuadro similar al mostrado en la Figura 1.2 donde
aparecen los enlaces de la instalacin para los sistemas operativos Linux, Mac
y Windows.
Supongamos que se desea instalar R en Windows, para esto se debe dar clic
sobre el hiperenlace Download R for Windows de la Figura 1.2. Una vez hecho
esto se abrir una pgina con el contenido mostrado en la Figura 1.3. Una vez
ingrese a esa nueva pgina usted debe dar clic sobre el hiperenlace install R
for the first time como es sealado por la flecha roja en la Figura 1.3.
Luego de esto se abrir otra pgina con un encabezado similar al mostrado en
la Figura 1.4, al momento de capturar la figura la versin actual de R era 3.2.5
pero seguramente en este momento usted tendr disponible una versin actua11 [Link]
1.3.
Una vez que est instalado R en su computador, usted podr acceder a l por
la lista de programas o por medio del acceso directo que qued en el escritorio,
en la Figura 1.5 se muestra la apariencia del acceso directo para ingresar a R.
Al abrir R aparecer en la pantalla de su computador algo similar a lo que est
en la Figura 1.6. La ventana izquierda se llama consola y es donde se ingresan
las instrucciones, una vez que se construye un grfico se activa otra ventana
llamada ventana grfica. Cualquier usuario puede modificar la posicin y tamaos de estas ventanas, puede cambiar el tipo y tamao de las letras en la
12 [Link]
1 Introduccin
1.4.
Tipos de objetos
En R existen varios tipos de objectos que permiten que el usuario pueda almacenar la informacin para realizar procedimientos estadsticos y grficos.
Los principales objetos en R son vectores, matrices, arreglos, marcos de datos
y listas. A continuacin se presentan las caractersticas de estos objetos y la
forma para crearlos.
1.4.1.
Vectores
Los vectores son arreglos ordenados en los cuales se puede almacenar informacin de tipo numrico (variable cuantitativa), alfanumrico (variable cualitativa) o lgico (TRUE o FALSE), pero no mezclas de stos. La funcin de R
para crear un vector es c() y que significa concatenar; dentro de los parntesis
de esta funcin se ubica la informacin a almacenar. Una vez construdo el
vector se acostumbra a etiquetarlo con un nombre corto y representativo de
la informacin que almacena, la asignacin se hace por medio del operador <entre el nombre y el vector.
A continuacin se presenta un ejemplo de cmo crear tres vectores que contienen las respuestas de cinco personas a tres preguntas que se les realizaron.
edad <- c(15, 19, 13, NA, 20)
deporte <- c(TRUE, TRUE, NA, FALSE, TRUE)
[Link] <- c(NA, 'Superman', 'Batman', NA, 'Batman')
El vector edad es un vector cuantitativo y contiene las edades de las 5 personas. En la cuarta posicin del vector se coloc el smbolo NA que significa Not
Available debido a que no se registr la edad para esa persona. Al hacer una
asignacin se acostumbra a dejar un espacio antes y despus del operador <de asignacin. El segundo vector es llamado deporte y es un vector lgico que
almacena las respuestas a la pregunta de si la persona practica deporte, nuevamente aqu hay un NA para la tercera persona. El ltimo vector [Link]
contiene la informacin del cmic favorito de cada persona, como esta variable
es cualitativa es necesario usar las comillas ' ' para encerrar las respuestas.
Cuando se usa NA para representar una informacin Not Available no se
deben usar comillas.
Es posible usar comillas sencillas 'foo' o comillas dobles "foo" para ingresar valores de una variable cualitativa.
Si se desea ver lo que est almacenado en cada uno de estos vectores, se debe
escribir en la consola de R el nombre de uno de los objetos y luego se presiona la
tecla enter o intro, al realizar esto lo que se obtiene se muestra a continuacin.
edad
## [1] 15 19 13 NA 20
1 Introduccin
deporte
## [1]
TRUE
TRUE
NA FALSE
TRUE
[Link]
## [1] NA
## [5] "Batman"
1.4.2.
"Superman" "Batman"
NA
Matrices
[1,]
[2,]
[3,]
[4,]
1.4.3.
Arreglos
, , 1
[,1]
[1,] "a"
[2,] "b"
[3,] "c"
[,2]
"d"
"e"
"f"
[,3]
"g"
"h"
"i"
[,4]
"j"
"k"
"l"
[,2]
"p"
"q"
"r"
[,3]
"s"
"t"
"u"
[,4]
"v"
"w"
"x"
, , 2
[,1]
[1,] "m"
[2,] "n"
[3,] "o"
1.4.4.
Marco de datos
1 Introduccin
## 3
## 4
## 5
13
NA
20
NA
FALSE
TRUE
Batman
<NA>
Batman
1.4.5.
Listas
Las listas son otro tipo de objeto muy usado para almacenar objetos de diferente tipo. La instruccin para crear una lista es list( ). A continuacin
vamos a crear una lista que contiene tres objetos: un vector con 5 nmeros
aleatorios llamado mivector, una matriz de dimensin 6 2 con los primeros doce nmeros enteros positivos llamada matriz2 y el tercer objeto ser
el marco de datos mimarco creado en el apartado anterior. Las instrucciones
para crear la lista requerida se muestran a continuacin.
[Link](12345)
mivector <- runif(n=5)
matriz2 <- matrix(data=1:12, ncol=6)
milista <- list(E1=mivector, E2=matriz2, E3=mimarco)
La funcin [Link] de la lnea nmero 1 sirve para fijar la semilla de tal manera que los nmeros aleatorios generados en la segunda lnea con la funcin
runif sean siempre los mismos. En la ltima lnea del cdigo anterior se construye la lista, dentro de la funcin list se colocan los tres objetos mivector,
matriz2 y mimarco. Es posible colocarle un nombre especial a cada uno de
los elementos de la lista, en este ejemplo se colocaron los nombres E1, E2 y
E3 para cada uno de los tres elementos. Para observar lo que qued almacenado en la lista se escribe milista en la consola y el resultado se muestra a
continuacin.
milista
##
##
##
##
##
##
##
##
$E1
[1] 0.7209 0.8758 0.7610 0.8861 0.4565
$E2
[1,]
[2,]
$E3
edad deporte [Link]
1
15
TRUE
<NA>
2
19
TRUE Superman
3
13
NA
Batman
4
NA
FALSE
<NA>
5
20
TRUE
Batman
1.5.
1.5.1.
Se sugiere que el nombre usado para nombrar un archivo tenga sentido y que
termine con extensin .R. A continuacin dos ejemplos de como nombrar mal
y bien un archivo.
Mal: hola.R
Bien: analisis_icfes.R
1.5.2.
10
1 Introduccin
Bien: [Link]
Aceptable: avgClicks
Mal: avg_Clicks
Para funciones:
Bien: CalculateAvgClicks
Mal: calculate_avg_clicks , calculateAvgClicks
1.5.3.
Se recomienda que cada lnea tenga como mximo 80 caracteres. Si una lnea
es muy larga se debe cortar siempre por una coma.
1.5.4.
Espacios
Use espacios alrededor de todos los operadores binarios (=, +, -, <-, etc.).
Los espacios alrededor del smbolo = son opcionales cuando se usan para
ingresar valores dentro de una funcin. As como en espaol, nunca coloque
espacio antes de una coma, pero siempre use espacio luego de una coma. A
continuacin ejemplos de buenas y malas prcticas.
tab <- table(df[df$days < 0, 2])
tot <- sum(x[, 1])
tot <- sum(x[1, ])
tab <- table(df[df$days<0, 2])
tab <- table(df[df$days < 0,2])
tab <- table(df[df$days < 0 , 2])
tab<- table(df[df$days < 0, 2])
tab<-table(df[df$days < 0, 2])
tot <- sum(x[,1])
tot <- sum(x[1,])
#
#
#
#
#
#
#
#
#
#
Bien
Bien
Bien
Faltan espacios alrededor '<'
Falta espacio luego de coma
Sobra espacio antes de coma
Falta espacio antes de '<-'
Falta espacio alrededor de '<-'
Falta espacio luego de coma
Falta espacio luego de coma
# Correcto
# Funciona pero no se recomienda
# Funciona pero no se recomienda
11
Espacios extras pueden ser usados si con esto se mejora la apariencia del
cdigo, ver el ejemplo siguiente.
plot(x
y
ylim
xlab
ylab
main
=
=
=
=
=
=
[Link],
[Link][, MakeColName(metric, ptiles[1], "roiOpt")],
ylim,
"dates",
metric,
(paste(metric, " for 3 samples ", sep = "")))
#
#
#
#
Correcto
Correcto
Sobran espacios alrededor de condicion
Se necesita espacio luego de coma
# Correcto
if ([Link](ylim))
ylim <- c(0, 0.06)
# Correcto
# Aceptable
if ([Link](ylim))
{
ylim <- c(0, 0.06)
}
# No se recomienda
12
1 Introduccin
if (condition) {
one or more lines
} else {
one or more lines
}
if (condition) {
one or more lines
}
else {
one or more lines
}
if (condition)
one line
else
one line
1.5.5.
# Correcto
# Incorrecto
# Incorrecto
Asignacin
# Correcto
# No recomendado
Para una explicacin ms detallada sobre el smbolo de asignacin se recomienda visitar este enlace14 .
1.5.6.
Punto y coma
# No se recomienda
14 [Link]
13
# Correcto
2
Grficos para una variable cuantitativa
2.1.
Funcin stem
16
Ejemplo
Como ilustracin vamos a crear el grfico de tallo y hoja para la variable
altura (cm) de un grupo de estudiantes de la universidad. Primero se leern
los datos disponibles en github y luego se usar la funcin stem para obtener
el grfico. A continuacin el cdigo usado.
url <- '[Link]
datos <- [Link](file=url, header=T)
stem(datos$altura)
##
##
##
##
##
##
##
##
##
##
##
##
##
|
|
|
|
|
|
|
|
|
|
7
3
679
0001
68888
001334
5678899
000033
88
1
De este grfico sencillo se puede ver que la variable presenta una mayor frecuencia para alturas ente 170 y 179 cm y que no tiene una distribucin simtrica.
2.2.
Funcin boxplot
La funcin boxplot sirve para crear un diagrama de cajas y bigote para una
variable cuantitativa. La estructura de la funcin boxplot con los argumentos
ms comunes de uso se muestran a continuacin.
17
Ejemplo
Como ilustracin vamos a crear tres boxplot para la variable altura (cm) de
un grupo de estudiantes de la universidad, el primer boxplot ser sobre la
variable altura, el segundo ser un boxplot para altura diferenciando por sexo
y el tercer boxplot ser igual que el primero pero modificando los nombres
a imprimir en el eje horizontal. Primero se leern los datos disponibles en
github y luego se usar la funcin boxplot para obtener ambos grfico. A
continuacin el cdigo usado.
18
Mujer
Sexo
Masculino
Gnero
Hombre
Femenino
190
180
170
Altura (cm)
150
160
170
160
150
Altura (cm)
180
190
150
160
170
180
190
Altura (cm)
2.3.
Funcin hist
La funcin hist sirve para crear el histograma para una variable cuantitativa.
Como argumentos esta funcin recibe un vector con los datos y opcionalmente
puede ingresarse como argumento el nmero de intervalos a ser graficados o
en su defecto el nmero de clases se determina con la frmula de Sturges.
Nota: los programas de computador usualmente construyen los histogramas
19
Ejemplo
Vamos a construir varios histogramas para los tiempos de 180 corredores de
la media maratn de CONAVI realizada hace algunos aos. A continuacin
se muestra la forma de ingresar los 180 datos.
maraton <- c(
10253, 10302,
10452, 10504,
10646, 10648,
10833, 10843,
10307,
10517,
10655,
10920,
10309,
10530,
10707,
10938,
10349,
10540,
10726,
10949,
10353,
10549,
10731,
10954,
10409,
10549,
10737,
10956,
10442,
10606,
10743,
10958,
10447,
10612,
10808,
11004,
20
11009,
11207,
11405,
11544,
11746,
11940,
12309,
12617,
13019,
13228,
13456,
13730,
13920,
14455,
15528,
20416,
11037,
11226,
11438,
11559,
11814,
11952,
12341,
12700,
13110,
13316,
13608,
13810,
14010,
14552,
15644,
20600,
11045,
11233,
11453,
11612,
11828,
12005,
12413,
12706,
13114,
13335,
13612,
13850,
14025,
14652,
15758,
20732,
11046,
11239,
11500,
11617,
11832,
12044,
12433,
12727,
13122,
13420,
13620,
13854,
14152,
15009,
15837,
20748,
11049,
11307,
11501,
11635,
11841,
12113,
12440,
12840,
13155,
13425,
13646,
13901,
14208,
15026,
15916,
20916,
11104,
11330,
11502,
11655,
11909,
12209,
12447,
12851,
13205,
13435,
13705,
13905,
14230,
15242,
15926,
21149,
11127,
11342,
11503,
11731,
11926,
12230,
12530,
12851,
13210,
13435,
13730,
13907,
14344,
15406,
15948,
21714,
11205,
11351,
11527,
11735,
11937,
12258,
12600,
12937,
13220,
13448,
13730,
13912,
14400,
15409,
20055,
23256)
Los datos estn codificados como por seis nmeros en el formato hmmss, donde
h corresponde a las horas, mm a los minutos y ss a los segundos necesarios
para completar la maratn. Antes de construir los histogramas es necesario
convertir los tiempos anteriores almacenados en maraton a horas, para esto
se utiliza el siguiente cdigo.
horas <- maraton %/% 10000
min <- (maraton - horas * 10000) %/% 100
seg <- maraton - horas * 10000 - min * 100
Tiempos <- horas + min / 60 + seg / 3600
A continuacin se muestra el cdigo para construir cuatro histogramas con 2,
4, 8 y 16 intervalos para los tiempos a partir de la variable Tiempos.
par(mfrow=c(2,2))
hist(x=Tiempos, breaks=2, main="", xlab="Tiempo (horas)",
ylab="Frecuencias", las=1)
mtext("(A)", side=1, line=4, font=1)
hist(x=Tiempos, breaks=4, main="", xlab="Tiempo (horas)",
ylab="Frecuencias", las=1)
mtext("(B)", side=1, line=4, font=1)
hist(x=Tiempos, breaks=8, main="", xlab="Tiempo (horas)",
ylab="Frecuencias")
21
150
Frecuencias
Frecuencias
100
50
0
1.0
1.5
2.0
2.5
100
80
60
40
20
0
3.0
1.0
Tiempo (horas)
2.0
2.5
3.0
Tiempo (horas)
40
20
0
10 20 30
(B)
Frecuencias
(A)
Frecuencias
1.5
1.0
1.5
2.0
Tiempo (horas)
(C)
2.5
1.0
1.5
2.0
2.5
Tiempo (horas)
(D)
22
<<<<-
c(quantile(Tiempos,
c(quantile(Tiempos,
c(quantile(Tiempos,
c(quantile(Tiempos,
par(mfrow=c(2, 2))
hist(Tiempos, breaks=puntos1, freq=FALSE,
main="", ylab="Densidad")
mtext("(A)", side=1, line=4, font=1)
hist(Tiempos, breaks=puntos2, freq=FALSE,
main="", ylab="Densidad")
mtext("(B)", side=1, line=4, font=1)
hist(Tiempos, breaks=puntos3, freq=FALSE,
main="", ylab="Densidad")
mtext("(C)", side=1, line=4, font=1)
hist(Tiempos, breaks=puntos4, freq=FALSE,
main="", ylab="Densidad")
mtext("(D)", side=1, line=4, font=1)
ylim=c(0,2), labels=TRUE,
ylim=c(0,2), labels=TRUE,
ylim=c(0,2),
ylim=c(0,2),
2.4.
Los grficos cuantil cuantil (quantile-quantile plot) son una ayuda para explorar si un conjunto de datos o muestra proviene de una poblacin con cierta
distribucin.
La funcin qqnorm sirve para explorar la normalidad de una muestra mientras
que la funcin qqplot es de propsito ms general, sirve para crear el grfico
cuantil cuantil para cualquier distribucin.
La estructura de las funciones con los argumentos ms comunes de uso se
muestran a continuacin.
Densidad
1.0
1.487
1.062
0.265
0.0
0.429
1.626
1.37
1.0
2.0
23
0.0
Densidad
2.0
1.0
1.5
2.0
2.5
1.0
1.5
Tiempos
2.5
Tiempos
1.0
0.0
0.0
1.0
Densidad
2.0
(B)
2.0
(A)
Densidad
2.0
1.0
1.5
2.0
Tiempos
(C)
2.5
1.0
1.5
2.0
2.5
Tiempos
(D)
qqnorm(y, ...)
qqplot(y, x, ...)
La funcin qqnorm slo necesita que se le ingrese el vector con la muestra
por medio del parmetro y, la funcin qqplot necesita de la muestra en el
parmetro y y que se ingrese en el parmetro x los cuantiles de la poblacin
candidata.
Existe otra funcin til y es qqline, esta funcin sirve para agregar una lnea
de referencia al grfico cuantil cuantil obtenido con qqnorm.
Ejemplo
Simular 30 observaciones de una distribucin N ( = 10, = 4) y construir el
grfico cuantil cuantil.
El cdigo para simular la muestra y crear el grfico cuantil cuantil se muestra
a continuacin.
24
Cuantiles muestrales
20
5 10
0
Sample Quantiles
-2
-1
20
15
10
5
0
-2
Theoretical Quantiles
-1
Cuantiles tericos
Figura 2.4: Grfico cuantil cuantil para una muestra generada de una poblacin normal.
En la izquierda de la Figura 2.4 est el grfico cuantil cuantil sin editar, en
la derecha se encuentra el grfico luego de modificar los nombres de los ejes,
grosor y color de la lnea de referencia.
Ejemplo
Simular 100 observaciones de una distribucin W eibull(1, 1) y construir dos
grficos cuantil cuantil, el primero tomando como referencia los cuantiles de
una N (0, 1) y el segundo tomando los cuantiles de la W eibull(1, 1).
El cdigo para simular la muestra y crear los grficos cuantil cuantil se muestra
a continuacin.
n <- 100
muestra <- rweibull(n=n, shape=1, scale=1)
25
4
3
0
muestra
3
2
0
muestra
par(mfrow=c(1, 2))
qqplot(y=muestra, x=qnorm(ppoints(n)))
qqplot(y=muestra, x=qweibull(ppoints(n), shape=1, scale=1))
-2
-1
qnorm(ppoints(n))
Figura 2.5: Grfico cuantil cuantil para una muestra generada de una poblacin Weibull.
En la Figura 2.5 estn los grficos cuantil cuantil solicitados. Del pnel izquierdo de la figura vemos que los puntos NO estn alineados, esto indica que la
muestra no proviene de la distribucin N (0, 1), esto es un resultado esperado
ya que sabamos que la muestra no fue generada de una normal. En el pnel
derecho de la misma figura vemos que los puntos SI estn alineados, esto indica que la muestra generada puede provenir de una poblacin W eibull(1, 1).
Los nombres de los ejes en la Figura 2.5 pueden ser editados para presentar
una figura con mejor apariencia.
2.5.
Funcin density
Los grficos de densidad son muy tiles porque permiten ver el(los) intervalo(s)
donde una variable cuantitativa puede ocurrir con mayor probabilidad.
La funcin density crea la informacin de la densidad y la funcin plot
dibuja la densidad.
La estructura de la funcin density con los argumentos ms comunes de uso
se muestra a continuacin.
26
Ejemplo
Simular mil observaciones de una N (0, 1), aplicar la funcin density al vector
y explorar el contenido de la salida.
Primero se generan las observaciones y se almacenan en el objeto y, luego
se aplica la funcin density y el resultado se guarda en el objeto res, para
explorar lo que almacena res se usa la funcin names. A continuacin el cdigo
utilizado.
y <- rnorm(n=1000)
res <- density(y)
names(res)
## [1] "x"
## [5] "call"
"y"
"bw"
"[Link]" "[Link]"
"n"
De la salida anterior se observa que la lista res tiene 7 elementos, los dos
primeros son los vectores con las coordenadas para dibujar la densidad, los
restantes elementos con informacin adicional.
Ejemplo
Con los datos generados en el ejemplo anterior construir la densidad para
varios ncleo y para varios valores de ancho de banda.
En el siguiente cdigo se construyen 4 densidades para diferentes ncleos.
par(mfrow=c(2, 2))
plot(density(y, kernel='gaussian'))
27
plot(density(y, kernel='triangular'))
plot(density(y, kernel='cosine'))
plot(density(y, kernel='rectangular'))
0.2
0.0
0.2
Density
0.0
Density
-4
-2
-4
-2
0.2
Density
0.0
0.2
0.0
Density
0.4
-4
-2
-4
-2
Figura 2.6: Densidad para una muestra aleatoria de una N(0, 1) cambiando
el ncleo de la densidad.
En la Figura 2.6 se muestran las densidades para 4 elecciones del ncleo. En la
prctica se usa el ncleo que est por defecto (gaussian) ya que el objetivo de
una densidad es ver la zonas donde es ms probable encontrar observaciones
de la variable.
En el siguiente cdigo se construyen 4 densidades para diferentes anchos de
banda.
par(mfrow=c(2, 2))
plot(density(y, bw=0.1))
plot(density(y, bw=0.2241))
plot(density(y, bw=0.5))
plot(density(y, bw=1))
# bw obtenido antes
28
-2
-4
-2
[Link](x = y, bw = 0.5)
[Link](x = y, bw = 1)
0.00
0.20
0.15
Density
0.00
Density
0.2
Density
0.0
0.2
0.0
Density
0.4
[Link](x = y, bw = 0.1)
-4
-2
-6
-4
-2
N = 1000 Bandwidth = 1
Figura 2.7: Densidad para una muestra aleatoria de una N(0, 1) cambiando
el ancho de banda.
pequeo la densidad queda muy rugosa y usar un valor muy grande la suaviza,
se recomienda usar el valor automtico.
Ejemplo
Construir un grfico de densidad para la variable peso corporal de la base de
datos medidas_cuerpo, luego construir la densidad para la misma variable
pero diferenciando por sexo.
url <- '[Link]
datos <- [Link](file=url, header=T)
par(mfrow=c(1, 2))
plot(density(datos$peso), main='Densidad para el peso corporal',
xlab='Peso corporal (kg)', ylab='Densidad', lwd=4)
[Link] <- with(datos, density(peso[sexo == 'Hombre']))
[Link] <- with(datos, density(peso[sexo == 'Mujer']))
plot([Link], xlim=c(20, 120),
main='Densidad para el peso corporal', ylab='Densidad',
xlab='Peso corporal (kg)', lwd=4, col='blue')
29
Densidad
0.03
0.04
Hombres
Mujeres
0.00
0.000
0.01
0.02
0.015
0.010
0.005
Densidad
0.020
20
40
60
80
100
120
20
40
60
80
100
120
3
Grficos para varias variables cuantitativas
En este captulo se presentan funciones para la creacin de grficos que involucran varias variables.
3.1.
Funcin plot
Los grficos de dispersin son muy tiles porque permiten ver la relacin que
existe entre dos variables cuantitativas, la funcin plot permite crear este tipo
de grficos. La estructura de la funcin plot con los argumentos ms usuales
se muestran a continuacin
plot(x, y, type, main, sub, xlab, ylab)
Los argumentos de la funcin plot son:
x: vector numrico con las coordenadas del eje horizontal.
y: vector numrico con las coordenadas del eje vertical
type: tipo de grfico a dibujar. Las opciones son:
'p' para obtener puntos, esta es la opcin por defecto.
'l' para obtener lneas.
'b' para obtener los puntos y lneas que unen los puntos.
'c' para obtener slo las lneas y dejando los espacios donde estaban
los puntos obtenidos con la opcin 'b'.
'o' para obtener los puntos y lineas superpuestas.
'h' para obtener lneas verticales desde el origen hasta el valor yi de
cada punto, similar a un histograma.
's' para obtener escalones.
'S' similar al anterior.
'n' para que no dibuje.
...: otros parmetros grficos que pueden ser pasados como argumentos
para plot.
31
32
Ejemplo
Crear 16 parejas de puntos tales que x = 5, 4, . . . , 9, 10 con y = 10 + (x
3)2 , dibujar los nueve diagramas de dispersin de y contra x usando todos los
valores posibles para el parmetro type.
A continuacin se muestra el cdigo para crear las 16 parejas de x e y. Los
nueve diagramas de dispersin se observan en la Figura 3.1, de esta figura se
observa claramente el efecto que tiene el parmetro type en la construccin
del diagrama de dispersin.
x <- -5:10
y <- -10 + (x-3)^2
par(mfrow=c(3, 3))
plot(x=x, y=y, type='p',
plot(x=x, y=y, type='l',
plot(x=x, y=y, type='b',
plot(x=x, y=y, type='c',
plot(x=x, y=y, type='o',
plot(x=x, y=y, type='h',
plot(x=x, y=y, type='s',
plot(x=x, y=y, type='S',
plot(x=x, y=y, type='n',
main="con
main="con
main="con
main="con
main="con
main="con
main="con
main="con
main="con
type='p'")
type='l'")
type='b'")
type='c'")
type='o'")
type='h'")
type='s'")
type='S'")
type='n'")
Ejemplo
Como ilustracin vamos a crear un diagrama de dispersin entre el precio de
apartamentos usados en la ciudad de Medelln y el rea de los apartamentos.
El cdigo necesario para cargar la base de datos y construir el diagrama de
dispersin se muestra a continuacin.
url <- '[Link]
datos <- [Link](file=url, header=T)
par(mfrow=c(1, 2))
plot(x=datos$mt2, y=datos$precio)
plot(x=datos$mt2, y=datos$precio, pch='.',
xlab='rea del apartamento (m2)', ylab='Precio (millones de pesos)')
En la Figura 3.2 se presenta el diagrama de dispersin entre precio y rea de
los apartamentos, de este diagrama se observa claramente que a medida que los
apartamentos tienen mayor rea el precio promedio y la variabilidad del precio
aumentan. Para el diagrama de dispersin de la derecha se us el parmetro
33
20 40
-10
20 40
10
-5
10
-5
10
con type='c'
con type='o'
con type='h'
10
-10
-10
y
-5
20 40
20 40
20 40
-10
-5
10
-5
10
con type='s'
con type='S'
con type='n'
5
x
10
-10
-10
-10
-5
20 40
20 40
20 40
-5
con type='b'
-10
20 40
con type='l'
-10
con type='p'
-5
10
-5
5
x
10
100
300
500
datos$mt2
1000
0
1000
datos$precio
34
100
300
500
Figura 3.2: Diagrama de dispersin del precio del apartamento versus rea
del apartamento. A la izquierda el diagrama de dispersin sin editar y a la
derecha el diagrama de dispersin mejorado
pch='.' con el objetivo de obtener pequeos puntos que representen cada
apartamento y que no se traslapen debido a que se tienen 694 observaciones
en la base de datos.
3.2.
Funcin persp
35
Figura 3.3: Ilustracin de los angulos theta y phi para la funcin persp.
Figura tomada de [Link]
theta, phi: ngulo para la visin de la superficie, theta para la direccin
azimutal y phi para latitud. Ver Figura 3.3 para una ilustracin de los
ngulos.
r: distancia entre el centro de la caja de dibujo al punto de vista.
col: color de la superficie.
border: color para el borde de la superficie.
box: valor lgico para indicar si se quiere dibujar la caja que contiene la
superficie, por defecto es TRUE.
axes: valor lgico para indicar si se desean marcas en los ejes y nombres de
los ejes, por defecto es TRUE. Si box='FALSE' no aparecen marcas ni nombres
de los ejes.
expand: factor de expansin aplicado a los valores en el eje z.
ticktype: tipo de marcas a colocar en los ejes, simple no dibuja nada y
detailed coloca nmeros a los ejes.
nticks: nmero aproximado de marcas en los ejes.
Ejemplo
Dibujar la superficie asociada a la funcin f (x, y) = sen(x2 + y 2 ) para 2
x 2 y 2 y 2. Usar 4 combinaciones de los parmetros theta y phi
para obtener un buen punto de vista de la superficie.
Lo primero que se debe hacer es crear la funcin f (x, y) la cual se va a llamar
fun. Luego se definen los vectores x e y tomando por ejemplo 25 puntos
equiespaciados en el intervalo [2, 2]. Luego se usa la funcin outer para crear
la rejilla o matriz que contiene los valores de f (x, y) para cada combinacin
de x e y, los resultados se almacenan en el objeto z. Por ltimo se dibujan 4
perspectivas de la funcin variando los parmetros theta y phi de la funcin
persp. A continuacin el cdigo utilizado.
fun <- function(x, y)
sin(x^2 + y^2)
x <- seq(from=-2, to=2, [Link]=25)
y <- seq(from=-2, to=2, [Link]=25)
36
x
x
Ejemplo
Dibujar la superficie de una distribucin normal bivariada con vector de medias = (5, 12) , varianzas unitarias y covarianza con valor de -0.8. Explorar
el efecto de los parmetros ticktype, nticks, expand, axes y box.
37
0.2
0.1
14
0.0
2
12
4
10
38
3.3.
Funcin pairs
6 7 8 9
6.0 7.5 9.0
5 6 7 8 9
INTG
7.5
DMNR
10
6.0
DECI
CONT
PREP
6.0
7.5
9.0
39
Ejemplo
Dibujar una matriz de dispersin para las variables precio, rea, nmero de
alcobas y nmero de baos de la base de datos sobre apartamentos en Medelln.
A continuacin se muestra el cdigo usado para crear el grfico solicitado. El
objeto datos corresponde a la base de datos completa mientras que [Link]
es el marco de datos slo con las variables de inters precio, rea, nmero de
alcobas y nmero de baos.
40
300
500
6
1500
100
300
500
0 500
precio
10 14
100
mt2
alcobas
banos
0
500
1500
2 4 6 8
12
Figura 3.7: Matriz de dispersin para las variables precio, rea, nmero de
alcobas y nmero de baos de la base de datos sobre apartamentos en Medelln.
En la Figura 3.7 se muestra la matriz de dispersin para las variables del
marco de datos [Link].
Ejemplo
Volver a construir la Figura 3.7 editando los nombres de las variables, usando
cruces rojas en lugar de puntos, en escala logaritmica, con marcas horizontales
en el eje vertical y eliminando los diagramas de dispersin abajo de la diagonal.
Para obtener la nueva matriz de dispersin con los cambios solicitados se usa
el siguiente cdigo. En la Figura 3.8 se presenta la nueva matriz de dispersin.
41
Matriz de dispersin
50
2000
1000
500
200
100
50
200
1000
50
200
500 1
10
3 4
6
2000
1000
500
200
100
50
Precio
500
200
100
50
rea
10
5
Num alcobas
2
1
6
5
4
3
2
Num baos
1
1
3 4
Ejemplo
Construir una matriz de dispersin con las variables precio, rea y avaluo para
apartamentos que cumplan la condicin 100m2 < area < 130m2 . Adicionalmente, se deben diferenciar los apartamentos sin parqueadero con color rojo
y los apartamentos con parqueadero con color verde.
Para crear una matriz de dispersin se puede tambien usar la base de datos
original llamada datos que contiene todas las variables y usar una frmula
con la ayuda del operador ~ para indicar las variables de inters. La frmula
NO debe contener nada del lado izquierdo mientras que en el lado derecho se
42
400
500 100
110
120
130 0 50
150
250
350
300
120
130
100
precio
100
300
500
200
500
100
250
100
110
mt2
100
avaluo
0 50
150
250
350
43
Ejemplo
Es posible agregar una leyenda a una matriz de dispersin?
Claro que es posible, se construye la matriz de dispersin y se deja en el lienzo
del dibujo un espacio para colocar la leyenda. A continuacin se muestra un
ejemplo disponible en Stackoverflow1 . A continuacin se muestra el cdigo
para el ejemplo y en la Figura 3.10 se presenta el resultado.
pairs(iris[1:4], main="Anderson's Iris Data -- 3 species",
pch=21, bg=c("red", "green3", "blue")[iris$Species],
oma=c(4, 4, 6, 12))
par(xpd=TRUE)
legend(0.85, 0.7, [Link](unique(iris$Species)), bty='n',
fill=c("red", "green3", "blue"))
4.0
0.5
1.5
2.5
7.5
2.0
4.5
6.0
[Link]
4.0
setosa
3.0
[Link]
versicolor
2.0
virginica
1.5
2.5
[Link]
0.5
[Link]
4.5
6.0
7.5
44
Ejemplo
Es posible modificar el contenido de los pneles de una matriz de dispersin?
Claro que es posible, para hacer esto se definen funciones que hagan lo que se
desea ver tanto en la diagonal como arriba y abajo de la misma.
Como ejemplo vamos a construir una matriz de dispersin que cumpla:
sobre la diagonal un diagrama de dispersin para las variables involucradas
y la recta de regresin ajustada,
en la diagonal un histograma para la variable,
debajo de la diagonal el coeficiente de correlacin entre las variables involucradas y usando un tamao de fuente proporcional a la fuerza de correlacin.
Para obtener esta matriz de dispersin especial se definen a continuacin las
funciones [Link], [Link] y [Link], a continuacin el cdigo utilizado. Luego se usa la funcin pairs y se indica qu funcin debe actuar en
cada uno de los parmetros [Link], [Link] y [Link].
# Funcin para dibujar los puntos y agregar la recta de regresin
[Link] <- function (x, y)
{
points(x, y, pch=20)
abline(lm(y ~ x), lwd=2, col='dodgerblue2')
}
# Funcin para crear el histograma
[Link] <- function(x, ...)
{
usr <- par("usr"); [Link](par(usr))
par(usr = c(usr[1:2], 0, 1.5) )
h <- hist(x, plot = FALSE)
breaks <- h$breaks; nB <- length(breaks)
y <- h$counts; y <- y/max(y)
rect(breaks[-nB], 0, breaks[-1], y, col="dodgerblue2", ...)
}
# Funcin para obtener la correlacin
[Link] <- function(x, y, digits=2, prefix="", [Link])
{
usr <- par("usr"); [Link](par(usr))
par(usr = c(0, 1, 0, 1))
r <- abs(cor(x, y))
txt <- format(c(r, 0.123456789), digits=digits)[1]
txt <- paste(prefix, txt, sep="")
45
100
300
500
100
300
0.86
mt2
10 14
500
0 500
1500
precio
0.63
0.67
0.31
alcobas
0.19
banos
0.35
500
1500
2 4 6 8
12
46
pairs([Link],
[Link] = [Link],
[Link] = [Link],
[Link] = [Link])
100
300
500
500
0 500
1500
precio
10 14
100
300
mt2
alcobas
banos
500
1500
2 4 6 8
12
3.4.
Funcin contour
4
Grficos para variables cualitativas
En este captulo se presentan funciones para la creacin de grficos para variables cualitativas.
4.1.
Funcin barplot
Los grficos de barras son tiles para representar las frecuencias absolutas
o relativas asociadas a los niveles de una variable cualitativa y la funcin
barplot se usa para obtener un grfico de barras. La estructura de la funcin
barplot con los argumentos ms comunes de uso se muestra a continuacin.
barplot(height, beside, horiz)
Los argumentos de la funcin barplot son:
height: vector o matriz con la informacin de las frecuencias absolutas o
relativas.
beside: valor lgico para indicar si las barras deben estar al lado cuando la
informacin ingresada es una matriz.
horiz: valor lgico para indicar si el diagrama de barras debe ser horizontal,
por defecto es FALSE.
La funcin barplot tiene otros parmetros que pueden ser consultados en la
ayuda de la funcin por medio de la instruccin ?barplot.
Ejemplo
Suponga que queremos construir un diagrama de barras para las frecuencias
relativas de la variable estrato socioeconmico del apartamento de la base de
datos sobre apartamentos usados en Medelln.
A continuacin se muestra el cdigo necesario para cargar la base de datos
47
48
Frecuencia relativa
0.30
0.25
0.20
0.15
0.10
0.05
0.00
2
Estrato socioeconmico
Figura 4.1: Diagrama de barras para el estrato socioeconmico de los apartamentos usados.
En la Figura 4.1 se presenta el diagrama de barras solicitado. Se observa que
hay pocos apartamentos (1.15 %) pertenecientes al estrato dos, los estratos
49
Frecuencia relativa
0.4
0.3487
0.3
0.232
0.2
0.1988
0.2089
0.1
0.0115
0.0
2
Estrato socioeconmico
Figura 4.2: Diagrama de barras para el estrato socioeconmico de los apartamentos usados con las frecuencias relativas sobre las barras.
En la Figura 4.2 se muestra el diagrama de barras modificado. Note que si no
50
Ejemplo
Suponga que queremos construir un diagrama de barras para comparar la
variable presencia de parqueadero con el estrato socioeconmico en la base de
datos sobre apartamentos usados en Medelln.
La funcin barplot tambin puede ser usada para representar una tabla de
frecuencia con dos variables. Para obtener la tabla de frecuencia para relacionar parqueadero con estrato se usa el siguiente cdigo.
tabla2 <- table(datos$parqueadero, datos$estrato)
tabla2
##
##
##
##
no
si
2
5
3
3
4
5
6
88 24
8
1
73 114 137 241
El anterior resultado es la tabla de contingencia entre las variables parqueadero y estrato, de esta tabla vemos que para estratos superiores el nmero de
apartamentos que si tienen parqueadero es mayor que los apartamentos sin
parqueadero. La tabla anterior se puede representar grficamente usando el
siguiente cdigo.
barplot(tabla2)
En la Figura 4.3 se muestra el grfico de barras sin editar, el color negro
representa la frecuencia de los apartamentos sin parqueadero (no) y el color
gris representa los apartamentos con parqueadero (si), las barras estn una
encima de la otra y la comparacin no es tan clara como debera. Para mejorar
la comparacin se usa el parmetro besides=TRUE, a continuacin el cdigo
utilizado.
barplot(tabla2, beside=TRUE)
En la Figura 4.4 est el grfico de barras obtenido agregando besides=TRUE
para que las barras se ubiquen una junto a la otra. Este grfico se puede
mejorar an ms colocando una leyenda para identificar las barras, nombrando
los ejes y usando otros colores, a continuacin el cdigo utilizado.
51
50
100
150
200
50
100
150
200
52
250
Frecuencia
200
no
si
150
100
50
0
2
Estrato
53
Frecuencia relativa
1.0
0.8
no
si
0.6
0.4
0.2
0.0
2
Estrato
54
4.2.
Funcin pie
Ejemplo
Dibujar un grfico de pastel para las frecuencias relativas de la variable estrato socioeconmico del apartamento de la base de datos sobre apartamentos
usados en Medelln.
La tabla1 construda en el primer ejemplo de barplot se utiliza para construir
el grfico solicitado. Abajo el cdigo necesario para construir el grfico.
nombres <- paste('Estrato ', 2:6)
pie(x=tabla1, labels=nombres,
main='Grfico de pastel NO recomendado!!!')
La Figura 4.7 presenta el grfico de pastel construdo con la instruccin anterior.
55
Grfico de pastel NO recomendado!!!
Estrato 4
Estrato 3
Estrato 2
Estrato 5
Estrato 6
Figura 4.7: Grfico de pastel para las frecuencias relativas del estrato socioeconmico.
EJERCICIOS
Use funciones o procedimientos (varias lneas) de R para responder cada una
de las siguientes preguntas.
Todas las preguntas siguientes estn relacionadas con la base de datos sobre
apartamentos1 usados en la ciudad de Medelln.
1. Construya un diagrama de barras para representar las frecuencias
ABSOLUTAS de la variable ubicacin.
2. Vuelva a construir el mismo diagrama de barras anterior pero de
forma horizontal y agregando nmeros de color azul para indicar
las frecuencias.
3. Construya una tabla de dos vas para las variables ubicacin y parqueadero.
4. Construya una tabla de frecuencias relativas para ver cmo se comporta la variable parqueadero dentro de cada ubicacin.
5. Dibuje un diagrama de barras para la tabla de frecuencias del punto
anterior.
1 [Link]
5
Funcin par
En este captulo se presentan funciones para la creacin de grficos que involucran varias variables.
5.1.
Funcin par
57
6
Funciones auxiliares
En este captulo se presentan funciones auxiliares que son tiles para complementar los grficos generados en R.
6.1.
Funcin abline
59
60
6 Funciones auxiliares
6.2.
Funcin legend
6.3.
Funcin text
6.4.
Funcin lines
6.5.
Funcin points
6.6.
Funcin identify
6.7.
Funcin locator
6.8.
Funcin axes
6.9.
Funcin title
7
Funciones geomtricas
7.1.
Funcin arrows
7.2.
Funcin segments
7.3.
Funcin rect
7.4.
Funcin polygon
61
A
More to Say
Yeah! I have finished my book, but I have more to say about some topics. Let
me explain them in this appendix.
To know more about bookdown, see [Link]
63
Bibliografa
65
ndice alfabtico
abline, 59
arreglo, 6
arrows, 61
axes, 60
barplot, 47
boxplot, 16
contour, 46
curve, 60
densidad, 25
density, 25
diagrama de dispersin, 31
ejes, 60
flechas, 61
grfico de barras, 47
grfico de contornos, 46
grfico de pastel, 54
gua de estilo, 9
hist, 18
histograma, 18
identificador, 60
identify, 60
legend, 60
leyendas, 60
lines, 60
lista, 8
locator, 60
lneas, 60
mtext, 60
objetos, 4
pairs, 38
par, 57
persp, 34
pie, 54
plot, 31
points, 60
polygon, 61
polgonos, 61
puntos, 60
qqnorm, 22
qqplot, 22
rect, 61
rectas, 61
rug, 60
segmentos, 61
segments, 61
text, 60
texto, 60
title, 60
ttulos, 60
vectores, 5
marco de datos, 7
matrices, 6
67