Para la elaboración de las siguientes gráficas se utilizó la información de INEGI de la Encuesta de Ocupación y Empleo disponible en el siguiente [link] (https://www.inegi.org.mx/programas/enoe/15ymas/)
Para la generación de las gráficas se realizó un tratamiento de la información. Para esto se seleccionó la siguiente información:
#1. Cargar librerias
paquetes=c("scales","survey","ggsurvey","forcats","haven","readxl","readxl","fastDummies","readr", "dplyr", "foreign", "tidyr", "ggplot2", "writexl","openxlsx","gridExtra")
for (i in paquetes) {if (!require(i, character.only = TRUE)) {install.packages(i);library(i, character.only = TRUE)} else {library(i, character.only = TRUE)}}
library(scales)
#2. Directorio de trabajo
setwd("D:/Curso R/Curso R")
enoe=read_dta("ENOE_SDEMT423.dta")
enoe <- enoe %>%
mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)
enoe=enoe %>% filter(f==1)
#3.1 Etiquetas
enoe$clase2=as.numeric(enoe$clase2)
ocupados=enoe%>%filter(clase2==1)
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",
"Subordinado/a" = "1",
"Empleadores/as" = "2",
"Cuenta propia" = "3",
"Sin pago" = "4"))
g1<-ggplot(ocupados) + aes(pos_ocu) # Base de datos y variable
# Opción 1: Pantalla dividida
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+ # facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")
# agregar más detalles
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+ # facet_wrap divide a la pantalla
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
geom_text(aes(label=..count..), stat='count',
position=position_dodge(0.5),
vjust=-0.5,
size=3.5)
# Opción 2: Separa las barras
g2<-ggplot(ocupados,aes(x=pos_ocu,fill=sex)) # Base de datos y variable
g2+geom_bar(position = "dodge")+
ggtitle("Ocupacion por sexo")+ # position ajusta la posicion de las barras
xlab("Posicion de la ocupacion")+
ylab("Personas")+
scale_fill_brewer(palette = "Blues")+
scale_y_continuous(labels = scales::comma)
# agregar más detalles
g2+geom_bar(position = "dodge", stat = "count") + # Barras con posición dodge y contando las ocurrencias
geom_text(aes(label = scales::comma(..count..)), stat = "count", position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) + # Añade etiquetas numeradas con comas
ggtitle("Ocupación por Sexo") + # Título del gráfico
xlab("Posición de la Ocupación") + # Etiqueta del eje X
ylab("Personas") + # Etiqueta del eje Y
scale_fill_brewer(palette = "Blues", name = "Sexo") + # Define la paleta de colores y titula la leyenda como "Sexo"
scale_y_continuous(labels = scales::comma)
# Opción 3: Apila los elementos uno encima del otro
# Preparación de los datos para calcular los porcentajes correctos
ocupados_r <- ocupados %>%
group_by(pos_ocu, sex) %>%
summarise(count = n(), .groups = 'drop') %>%
group_by(pos_ocu) %>%
mutate(percent = count / sum(count) * 100)
# Creación del gráfico con los datos preparados
g3 <- ggplot(ocupados_r, aes(x = pos_ocu, y = percent, fill = sex))
g3+geom_bar(stat = "identity", position = "dodge") + # Usar barras con posición dodge
geom_text(aes(label = scales::percent(percent / 100)), position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Porcentaje") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = percent_format(scale = 1))
# Creación del gráfico con las cifras divididas entre 100
g3+geom_bar(stat = "identity", position = "fill") + # Usar barras con posición fill para apilar los porcentajes en una barra
geom_text(aes(label = scales::percent(percent / 100, accuracy = 0.1)), position = position_fill(vjust = 0.5), size = 3.5) +
ggtitle("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 el eje Y como porcentaje
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
#4.3 Con 1 variable continua
class(ocupados$eda)
## [1] "numeric"
ocupados$eda<-as.numeric(ocupados$eda)
class(ocupados$eda)
## [1] "numeric"
# eda=Edad
g4<-ggplot(ocupados) + aes(eda) # Base de datos y variable
g4+geom_area(stat="bin")
g4+geom_freqpoly()
g4+geom_histogram(binwidth = 5)
#4.4 Con 2 variables continuas
ggplot(ocupados, aes(x = eda, y = ing_x_hrs)) +
geom_point(alpha = 0.5, color = "green") + # Utiliza puntos azules con cierta transparencia para manejar la sobreposición
ggtitle("Relación entre edad e ingresos por Hora") + # Título del gráfico
xlab("Edad (años)") + # Etiqueta del eje X
ylab("Ingresos por hora") + # Etiqueta del eje Y
theme_minimal() # Aplica un tema minimalista para un diseño limpio