Curso de gráficas

Usamos la [ENOE] (https://www.inegi.org.mx/programas/enoe/15ymas/)

El objetivo es describir el comportamiento de los ocupados por género

La Gráfica 1 permite observar cómo se distribuye la población encuestada según su posición de ocupación y sexo. A partir de dicha ilustración, se advierte que más del 50% de las mujeres se ubican en la categoría “Sin pago”, mientras que más del 50% de los hombres se ubican en las categorías “Empleadores” (75.6%), “Subordinado” (58.2%), y por “Cuenta propia” (57.1%).

# Lista de paquetes a utilizar

paquetes = c("tidyverse", "data.table", "foreign", "haven", "survey", "forcats", "dplyr", "tidyr", "ggplot2", "gridExtra", "knitr", "kableExtra")

# Verificar e instalar paquetes faltantes

for (i in paquetes) {
  if (!require(i, character.only = TRUE)) {
    install.packages(i)
    library(i, character.only = TRUE)
  } else {
    library(i, character.only = TRUE)
  }
}


setwd("~/Curso_Coneval")

enoe=read_dta("ENOE_SDEMT423.dta")

#Filtramos los datos en el dataframe

enoe <- enoe %>%
  mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)


enoe=enoe %>% filter(f==1)

#Crear un subconjunto de datos específico

enoe$clase2 = as.numeric(enoe$clase2)

#Filtramos el dataframe para incluir solamente a los individuos que están ocupados

ocupados = enoe %>% filter(clase2 == 1)

#Etiquetado de Variables

ocupados <- ocupados %>%
  mutate(sex = fct_recode(factor(sex), 
                          "Hombre" = "1", 
                          "Mujer" = "2"))

ocupados <- ocupados %>%
  mutate(pos_ocu = fct_recode(factor(pos_ocu), 
                              "No Aplica" = "0", 
                              "Suborninado" = "1", 
                              "Empleadores" = "2", 
                              "Cuenta propia" = "3", 
                              "Sin pago" = "4"))

#Gráfica con dos variables discretas

#Opción 3: Barras Apiladas por Porcentajes

ocupados_r <- ocupados %>%
  group_by(pos_ocu, sex) %>%
  summarise(count = n(), .groups = 'drop') %>%
  group_by(pos_ocu) %>%
  mutate(percent = count / sum(count) * 100)


g3 <- ggplot(ocupados_r, aes(x = pos_ocu, y = percent, fill = sex))


g3 + geom_bar(stat = "identity", position = "fill") +  # Barras apiladas por porcentajes
  geom_text(aes(label = scales::percent(percent / 100, accuracy = 0.1)), position = position_fill(vjust = 0.5), size = 3.5) +
  ggtitle("Gráfica 1. Ocupación por Sexo") +
  xlab("Posición de la Ocupación") +
  ylab("Porcentaje de Personas") +
  scale_fill_brewer(palette = "Blues", name = "Sexo") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +  # Formatear eje Y como porcentaje
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5)) +
labs(caption = "Nota: población de 15 años y más\nFuente: ENOE cuarto trimestre 2023")