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.
packages = c("dplyr", "readxl", "writexl", "tseries", "forecast", "fastDummies", "lubridate", "cowplot","ggfortify","ggplot2","ggpubr","hrbrthemes","gghighlight","tidyverse","readr")
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
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.
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.
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"))
)
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'))