28 oct 2024

Colocando etiquetas en gráficos en R usando labeller

En ocasiones estamos interesados en representar series con distintas escalas, por ejemplo: el precio del petróleo, la inflación y el crecimiento económico. Lo que suele ser frecuente cuando describimos múltiples series temporales al inicio de una investigación o presentación. Estas series, suelen calcularse a partir de distintas transformaciones y necesitar distintas etiquetas. En la siguiente entrada presentamos un ejemplo breve.

## carga los paquetes relevantes
packages = c("dplyr", "readxl", "writexl", "tseries", "forecast", "fastDummies", "lubridate", "cowplot","ggfortify","ggplot2","ggpubr","hrbrthemes","gghighlight","tidyverse","readr")
 
data_mes <- read_excel("data_embi.xlsx")
data_mes
# A tibble: 213 × 11
   fecha                 wti   vix ind_pro_usa r_inter ipc_rd ipc_sub_rd imae_rd tcn_venta
   <dttm>              <dbl> <dbl>       <dbl>   <dbl>  <dbl>      <dbl>   <dbl>     <dbl>
 1 2007-01-01 00:00:00  54.8  11.0        99.8    9.32   58.1       62.5    94.0      33.9
 2 2007-02-01 00:00:00  59.3  11.2       101.     9.15   58.3       62.5    96.9      33.5
 
data_t_mes <- data_mes  |>
  as_tibble(p_inter = 1/(1+r_inter)) |>
  mutate() |>
  mutate(across(wti:all_com, ~(log(.))),
         across(wti:all_com, ~((.-dplyr::lag(.,1))*100), .names= "dln{.col}"),
         across(wti:all_com, ~((.-dplyr::lag(.,12))*100), .names= "d12{.col}")) |>
  ungroup() |>
  na.omit()

Luego de importar nuestra data, realizamos distintas transformaciones: (1) en logaritmo, (2) la variación mensual y (3) la variación interanual. Luego, creamos un vector donde se indique el nombre de la variable y la etiqueta de la misma. El nombre se usará para elegir las variables de la base de datos, mientras que las etiquetas van a presentar una descripción sobre la variable que deseamos representar en nuestra gráfica.


# Selección y etiquetas de variables
variable_labels <- c(
  wti = "Petróleo",
  vix = "VIX",
  d12all_com = "Materias primas",
  d12ind_pro_usa = "Act. Ind. Ext. (% anual)",
  r_inter = "Tasa interbancaria",
  d12ipc_rd = "Inflación (% anual)",
  d12imae_rd = "Imae (% anual)",
  #d12lnimae_rd = "Exportaciones (% anual)",
  d12tcn_venta = "Depreciación anual",
  embi = "EMBI"
)

Finalmente, dentro de la función facet_wrap usamos el argumento labeller para indicar al programar la etiqueta que deseamos colocar.

# Definir los datos de ejemplo
fechas_recesion <- data.frame(
  inicio = as.POSIXct(c("2007-12-01", "2013-01-01",  "2020-03-01")),
  fin = as.POSIXct(c("2009-06-01", "2013-12-31", "2020-08-01"))
)
 
grafico_mes_sup <- data_t_mes |>
  mutate(fecha=as.POSIXct(fecha)) |>
  dplyr::select(fecha,names(variable_labels)) |> 
  pivot_longer(cols = -c(fecha), names_to = "Variable", values_to = "Valor") |>
  arrange(Variable) |>
  group_by(Variable) |>
  ggplot() +
  geom_line(aes(x = fecha, y = Valor), size=0.8)  +
  geom_rect(data = fechas_recesion, aes(xmin = inicio, xmax = fin, ymin = -Inf, ymax = Inf), fill = "gray", alpha = 0.2) +
  facet_wrap(~Variable, scales='free', ncol = 3, labeller = labeller(Variable = variable_labels)) +
  theme_classic() + xlab(NULL)  + ylab(NULL) +
  theme(legend.position = "bottom",
        axis.ticks = element_line(colour = "grey70", size = 0.2),
        strip.background = element_blank(),
        title=NULL, 
        legend.title = element_blank(),
        text = element_text(size = 12),
        legend.direction = "horizontal",
        axis.text=element_text(size=11),
        axis.title.x = element_text(size = 12),
        axis.title.y = element_text(size = 12),
        legend.text = element_text(size=12),
        strip.text = element_text(size = 12),
        legend.background = element_rect(fill='transparent'))

Recodificación de variables usando dplyr en R

Una base de datos suele tener diversos tipos de variables del tipo cualitativo y cuantitativo. En función del tipo de variables aplicamos di...