El análisis de datos categoricos mediante gráficas de barras, es una herramienta fundamental para la visualización y comprensión de características dentro de una población. En este caso, se emplearon gráficas de barras y de pastel para representar la variable de raza, que en este caso nos permitira saber tipo y frecuencia de esta misma en el conjunto de datos entregado.
Para comenzar, lo primero que haremos es descargar y cargar todas las librerias necesarias para la creación de las gráficas, además de cargar nuestros datos.
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(descriptr)
library(ggplot2)
library(datos)
library(forcats)
options(encoding = "UTF-8")
set.seed(2025)
datos.e <- data.frame (id = 1:300,
Raza=sample(c("Blanca","Afrodescendiente","Indígena","Mestiza","Otra"),
size = 300, replace = TRUE, prob = c(0.4,0.2,0.15,0.2,0.05)),
edad= sample(18:70, size =300, replace= TRUE),
sexo=sample(c("Femenino","Masculino"), size = 300, replace = TRUE))
#tomar muestra de 200
Cada una de las librerias funciona para lo siguiente:
Función: Manejo y transformación de datos
Uso: Filtrar, seleccionar, agrupar, resumir datos
Ejemplo: datos %>% filter(edad > 30) %>% group_by(sexo)
Función: Análisis descriptivo y estadísticas
Uso: Tablas de frecuencia, resúmenes numéricos
Ejemplo: ds_summary_stats(datos$edad)
Función: Creación de gráficos elegantes
Uso: Gráficos de barras, dispersión, histogramas
Ejemplo: ggplot(datos, aes(x=edad)) + geom_histogram()
Función: Conjuntos de datos de práctica
Uso: Datos ejemplo para aprender y probar código
Ejemplo: data(“mtcars”) (aunque datos es un paquete en español)
Función: Manejo de variables categóricas (factores)
Uso: Ordenar, recodificar niveles de factores
Ejemplo: fct_reorder(raza, frecuencia)
Función: Configura codificación de caracteres
Uso: Permite usar acentos y caracteres especiales (ñ, á, é, í, ó, ú)
Importante: Evita errores con textos en español
Función: Fija la semilla aleatoria
Uso: Reproduce los mismos resultados aleatorios
Ejemplo: Al usar sample() o rnorm() siempre da los mismos resultados
#Tabla de frecuencias
tabla_raza <- datos.e %>% count(Raza)
#Ordenar por frecuencia descendente
library(ggplot2)
library(dplyr)
library(forcats)
print(tabla_raza)
## Raza n
## 1 Afrodescendiente 61
## 2 Blanca 116
## 3 Indígena 57
## 4 Mestiza 53
## 5 Otra 13
str(tabla_raza)
## 'data.frame': 5 obs. of 2 variables:
## $ Raza: chr "Afrodescendiente" "Blanca" "Indígena" "Mestiza" ...
## $ n : int 61 116 57 53 13
tabla_raza <- tabla_raza %>%
mutate(Raza = iconv(Raza, to = "UTF-8"))
tabla_raza <- tabla_raza %>%
mutate(Raza = fct_reorder(Raza, n))
ggplot(tabla_raza, aes(x = Raza, y = n, fill = Raza)) +
geom_col(width = 0.7) +
geom_text(aes(label = n), vjust = -0.5, size = 4) +
scale_fill_manual(values = c("#C995B7", "#439FB7", "#ACE0B4", "#FFFFC8", "#C4D5FB")) +
labs(title = "Distribucion por Raza",
x = "Categorias de Raza",
y = "Frecuencia Absoluta") +
ylim(0, max(tabla_raza$n) * 1.1) +
theme_minimal(base_size = 14) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
legend.position = "none")
El código usa una secuencia de funciones especializadas para transformar y visualizar datos categóricos. En primer, dplyr organiza y cuenta las frecuencias de cada categoría, mientras que forcats reordena estos niveles para una presentación más intuitiva. ggplot2 construye el gráfico mediante capas: geom_col genera las barras, geom_text añade las etiquetas numéricas y scale_fill_manual asigna una paleta de colores. labs personaliza títulos y ejes, ylim ajusta los límites del gráfico y theme_minimal aplica un diseño limpio a la estructura. Por ultimo, theme elimina la leyenda y centra el título, creando así una visualización que comunica de manera efectiva la distribución de los datos.
tabla_raza <- tabla_raza %>%
mutate(prop = n / sum(n) * 100,
Raza = paste0(Raza, " (", round(prop,1), "%)"))
ggplot(tabla_raza, aes(x ="", y = n, fill = Raza)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar(theta = "y") +
scale_fill_manual(values = c("#C995B7", "#439FB7", "#ACE0B4", "#FFFFC8", "#C4D5FB")) +
labs(title = "Distribución de raza (Gráfico de torta)") +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, face = "bold"))
2.1 Configuración para gráfica de pastel
Al cambiar el tipo de gráfica, utilizamos distintas lineas de código, tales como:
Función: Transforma un gráfico de barras en un gráfico circular (pastel/torta) tomando los valores en el eje Y como proporciones angulares.
Función: Se coloca una cadena vacía en el eje X para que todas las barras se apilen en el mismo punto antes de convertirlas en sectores circulares.
Función: Define el grosor de cada segmento en el gráfico circular. 1 significa un círculo completo sin espacios.
Función: Elimina todos los ejes, textos y líneas de referencia para que la torta quede limpia y solo se vea el gráfico y las etiquetas.
Función: Se reemplaza el nombre original de la categoría por una etiqueta que incluye tanto el nombre de la raza como el porcentaje.
En la construcción de un gráfico circular o de pastel en ggplot2, se emplean varios elementos específicos que lo diferencian de un gráfico de barras tradicional. La función coord_polar(theta = “y”) es importante, ya que transforma las coordenadas cartesianas en polares, utilizando los valores del eje Y para definir los ángulos de cada sector y así dar forma circular al gráfico, para facilitar esta transformación, es común usar x = “” en la estética, lo que colapsa todas las barras en una única posición horizontal antes de convertirlas en sectores, evitando una dispersión innecesaria en el eje X. Se ajusta width = 1 en geom_bar() para garantizar que el grosor de las barras origine un círculo completo sin espacios entre los segmentos. Para lograr un diseño limpio, se aplica theme_void(), el cual elimina ejes, líneas de referencia y etiquetas numéricas, dejando solo el gráfico y sus etiquetas personalizadas. Por ultimo, una modificación importante es enriquecer la variable estética fill para que, en lugar de mostrar solo el nombre de cada categoría, incluya también el porcentaje correspondiente, proporcionando así, información inmediata al observador sin depender de leyendas externas o textos adicionales.
La elección entre un gráfico de barras y uno de pastel depende del objetivo de la visualización. El gráfico de barras es ideal para comparar magnitudes entre categorías de manera precisa, ya que su estructura de ejes cartesianos permite al ojo humano discernir fácilmente diferencias de longitud, lo que lo hace superior para analizar valores exactos y rangos amplios de datos. Por otro lado, el gráfico de pastel se especializa en mostrar la proporción de cada categoría respecto a un todo, donde la transformación polar convierte los valores en ángulos y áreas circulares, facilitando una comprensión inmediata de las partes que componen un total. Al final, la desición de que tipo de gráfico utilizar dependera del analista, quien debera considerar, la audiencia junto con el contexto y la naturaleza de los datos.