4 Gráficos para variables cualitativas
En este capítulo se presentan funciones para la creación de gráficos para variables cualitativas.
4.1 Función barplot
Los gráficos de barras son útiles para representar las frecuencias absolutas o relativas asociadas a los niveles de una variable cualitativa y la función barplot
se usa para obtener un gráfico de barras. La estructura de la función barplot
con los argumentos más comunes de uso se muestra a continuación.
Los argumentos de la función barplot
son:
height
: vector o matriz con la información de las frecuencias absolutas o relativas.beside
: valor lógico para indicar si las barras deben estar al lado cuando la información ingresada es una matriz.horiz
: valor lógico para indicar si el diagrama de barras debe ser horizontal, por defecto esFALSE
.
La función barplot
tiene otros parámetros que pueden ser consultados en la ayuda de la función por medio de la instrucción ?barplot
.
Ejemplo
Suponga que queremos construir un diagrama de barras para las frecuencias relativas de la variable estrato socioeconómico del apartamento de la base de datos sobre apartamentos usados en Medellín.
A continuación se muestra el código necesario para cargar la base de datos aptos2015
. Antes de construir el diagrama de barras solicitado es necesario construir la tabla de frecuencias para la variable estrato, para esto se usa la función table
y los resultados se almacenan en el objeto tabla1
que contiene las frecuencias absolutas. Para obtener las frecuencias relativas se usa luego la función prop.table
sobre el objeto tabla1
.
url <- 'https://tinyurl.com/hwhb769'
datos <- read.table(file=url, header=T)
tabla1 <- table(datos$estrato)
tabla1 <- prop.table(tabla1)
tabla1
##
## 2 3 4 5 6
## 0.01152738 0.23198847 0.19884726 0.20893372 0.34870317
Una vez se tiene el objeto con la información de las frecuencias relativas se puede dibujar el diagrama de barras usando el siguiente código.
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 tres, cuatro y cinco aportan porcentajes similares a la base de datos y que el estrato 6 es el que más apartamentos aporta a la base de datos, 34.87%.
Algunas veces se acostumbra a colocar las frecuencias relativas sobre la parte superior de las barras para facilitar la lectura. A continuación se presenta el código para replicar la Figura 4.1 con las frecuencias relativas. Lo primero que se hace es dibujar el diagrama de barras y almacenar la información de él en el objeto xx
para luego poder usar la ubicación de cada una de las barras. Note que se agregó también ylim=c(0, 0.45)
para conseguir una ampliación del eje vertical, esto para lograr que se vea el número sobre la barra del estrato 6. Luego se usa la función text
para incluir un texto en las coordenadas x=xx
y y=tabla1
, el parámetro pos=3
coloca el texto en la parte superior de las coordenadas y el parámetro label
sirve para indicar lo que se desea escribir en las coordenadas indicadas, en este caso son las frecuencias relativas almacenadas en tabla1
.
xx <- barplot(tabla1, ylim=c(0, 0.45), col=gray(0.9),
xlab='Estrato socioeconómico',
ylab='Frecuencia relativa', las=1)
text(x=xx, y=tabla1, pos=3, cex=0.8, col="red",
label=round(tabla1, 4))
En la Figura 4.2 se muestra el diagrama de barras modificado. Note que si no se hubiese usado ylim=c(0, 0.45)
al dibujar el diagrama, la marca sobre la última barra no se podría ver.
Ejemplo
Suponga que queremos construir un diagrama de barras para comparar la variable presencia de parqueadero con el estrato socioeconómico en la base de datos sobre apartamentos usados en Medellín.
La función barplot
también 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 código.
##
## 2 3 4 5 6
## no 5 88 24 8 1
## si 3 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 número de apartamentos que si tienen parqueadero es mayor que los apartamentos sin parqueadero. La tabla anterior se puede representar gráficamente usando el siguiente código.
En la Figura 4.3 se muestra el gráfico 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 están una encima de la otra y la comparación no es tan clara como debería. Para mejorar la comparación se usa el parámetro besides=TRUE
, a continuación el código utilizado.
En la Figura 4.4 está el gráfico de barras obtenido agregando besides=TRUE
para que las barras se ubiquen una junto a la otra. Este gráfico se puede mejorar aún más colocando una leyenda para identificar las barras, nombrando los ejes y usando otros colores, a continuación el código utilizado.
barplot(tabla2, beside = TRUE, las=1,
xlab='Estrato', ylab='Frecuencia',
col = c("lightblue", "mistyrose"),
ylim = c(0, 250))
legend('topleft', legend=rownames(tabla2), bty='n',
fill=c("lightblue", "mistyrose"))
En la Figura 4.5 se observa el gráfico de barras solicitado, se observa claramente que en los estratos 4, 5 y 6 predominan los aparatamentos con parqueadero.
Es posible construir una tabla de contingencia de frecuencia relativa para ver cómo es el comportamiento de tener o no parquedadero dentro de cada estrato, el siguiente código construye la tabla3
con la información necesaria. La función prop.table
permite obtener la tabla de frecuencias relativas a partir de una tabla de frecuencias absolutas, el parámetro margin
sirve para indicar si las frecuencias relativas se deben obtener por fila (margin=1
) o por columnas (margin=2
).
##
## 2 3 4 5 6
## no 0.625000000 0.546583851 0.173913043 0.055172414 0.004132231
## si 0.375000000 0.453416149 0.826086957 0.944827586 0.995867769
De la anterior tabla se ve que el porcentaje de apartamentos con parqueadero supera enormemente el los apartamentos sin parqueadero para los estratos 6, 5 y 4. El código para generar un gráfico asociado a la tabla3
se muestra a continuación.
barplot(tabla3,
beside = TRUE, las=1,
xlab='Estrato', ylab='Frecuencia relativa',
col = c("lightblue", "mistyrose"),
ylim = c(0, 1))
legend('topleft', legend=rownames(tabla2), bty='n',
fill=c("lightblue", "mistyrose"))
¿Cuáles son las ventajas y/o desventajas de las figuras 4.5 y 4.6 al ser presentadas en un informe?
4.2 Función pie
En R es posible construir gráficos de pastel para representar una tabla de frecuencia relativa o absoluta, sin embargo este tipo de gráficos no es recomendable y en la ayuda de la función se hace la siguiente advertencia:
La estructura de la función pie
con los argumentos más comunes de uso se muestra a continuación.
Los argumentos de la función pie
son:
x
: vector con elementos no negativos que representan las frecuencias de los niveles de la variable cualitativa.labels
: vector con los nombres a colocar en cada parte del pastel, por defecto se usan los nombres del vectorx
.
Ejemplo
Dibujar un gráfico de pastel para las frecuencias relativas de la variable estrato socioeconómico del apartamento de la base de datos sobre apartamentos usados en Medellín.
La tabla1
construída en el primer ejemplo de barplot
se utiliza para construir el gráfico solicitado. Abajo el código necesario para construir el gráfico.
nombres <- paste('Estrato ', 2:6)
pie(x=tabla1, labels=nombres,
main='Gráfico de pastel NO recomendado!!!')
La Figura 4.7 presenta el gráfico de pastel construído con la instrucción anterior.
4.3 Función dotchart
Los gráficos de puntos son útiles para representar tablas de frecuencia (de 1 o 2 vías) o tablas de resumen en relación a una o dos variables. La estructura de la función dotchart
se muestra a continuación.
Los argumentos de la función dotchart
son:
x
: vector o matriz con la información de las frecuencias o medida de resumen a representar. Six
es una matriz las columnas representarán agrupaciones.labels
: vector con los nombres a usar para los puntos, por defecto toma los nombres de las filas de la matrizx
.groups
: vector con los nombres a usar para los grupos, por defecto toma los nombres de las columnas de la matrizx
.cex
: tamaño de los nombres a mostrar en los ejes.pt.cex
: tamaño del punto.pch
: tipo de punto a usar, las diferentes opciones parapch
están disponibles en la Figura 6.11.color
: tipo de color usar para los puntos.lcolor
: color para la línea asociada a cada punto....
: otros parámetros gráficos que pueden ser pasados como argumentos.
Ejemplo
Suponga que queremos explorar el rendimiento de del combustible (mpg
) para los 32 autos de la base de datos mtcars
usando un diagrama de puntos.
A continuación se muestra el código necesario para crear el gráfico de puntos deseado.
mtcars <- mtcars[order(mtcars$mpg), ] # Para re-ordenar la base
dotchart(mtcars$mpg, labels=row.names(mtcars),
cex=0.6, xlab="mpg")
En la Figura 4.8 se tiene el gráfico de puntos para la variable mpg
, de esta figura se observa fácilmente que el Toyota Corolla tiene el mayor rendimiento de combustible y que el Cadillac Fleetwood el menor.
Ejemplo
Suponga que se tiene una tabla de contingencia con la información del número de hombres y mujeres que sufren de una enfermedad rara en cuatro ciudades importantes del mundo, a continuación la matriz x
con la información recolectada.
x <- matrix(c(4, 6, 30, 18, 7, 13, 35, 20),
ncol=4, byrow=TRUE)
colnames(x) <- c('Madrid', 'Londres', 'Paris', 'Miami')
rownames(x) <- c('Hombre', 'Mujer')
x
## Madrid Londres Paris Miami
## Hombre 4 6 30 18
## Mujer 7 13 35 20
En la salida anterior se presenta la matriz x
, de esta matriz se observa que en Madrid hay 11 personas, 4 hombres y 7 mujeres que sufren de la enfermedad, las demás columnas se interpretan de forma similar.
Para construir un gráfico de puntos con el objetivo de presentar la información de la matriz x
se utiliza el código mostrado abajo. En la Figura 4.9 se presenta el gráfico de puntos obtenido y de esta figura se nota claramente que en París es donde hay más personas que sufren de la enfermedad.
El gráfico de puntos presentado en la Figura 4.9 se puede mejorar usando los otros argumentos disponibles en la función dotchart
, a continuación el código y en la Figura 4.10 el resultado.
dotchart(x=x,
pt.cex=2, pch=c(8, 21), color=c('blue', 'red'),
lcolor='black',
xlab='Número de personas')
EJERCICIOS
Use funciones o procedimientos (varias líneas) de R para responder cada una de las siguientes preguntas.
Todas las preguntas siguientes están relacionadas con la base de datos sobre apartamentos usados en la ciudad de Medellín.
- Construya un diagrama de barras para representar las frecuencias ABSOLUTAS de la variable ubicación.
- Vuelva a construir el mismo diagrama de barras anterior pero de forma horizontal y agregando números de color azul para indicar las frecuencias.
- Construya una tabla de dos vías para las variables ubicación y parqueadero.
- Construya una tabla de frecuencias relativas para ver cómo se comporta la variable parqueadero dentro de cada ubicación.
- Dibuje un diagrama de barras para la tabla de frecuencias del punto anterior.