Ir al contenido

bcchr devuelve tibbles normales. Esa decisión permite usar la serie directamente con ggplot2, sin clases especiales ni métodos de gráfico obligatorios.

Los ejemplos de esta página consultan la API del Banco Central y requieren que BCCH_TOKEN esté configurado. Si no existe el token, el código se muestra pero no se ejecuta al construir la vignette.

Descargar una serie

Usaremos el dólar observado y una ventana de cinco años. El código de la serie es exacto; cuando no lo conozca puede encontrar candidatos con resolve_series().

library(bcchr)

# Requiere BCCH_TOKEN configurado.
dolar <- get_series(
  "F073.TCO.PRE.Z.D",
  from = Sys.Date() - 365 * 5,
  to = Sys.Date()
)

dolar <- dolar[
  dolar$status_code == "OK" & !is.na(dolar$value),
  c("date", "value")
]

tail(dolar)
#> # A tibble: 6 × 2
#>   date       value
#>   <date>     <dbl>
#> 1 2026-08-14  913.
#> 2 2026-08-17  913.
#> 3 2026-08-18  914.
#> 4 2026-08-19  922.
#> 5 2026-08-20  920.
#> 6 2026-08-21  923.

La opción rápida

plot_series() sirve para una inspección inmediata. Es deliberadamente pequeño: recibe la salida de get_series() y devuelve un objeto ggplot.

Personalizar el gráfico

El antiguo dashboard de indicadores financieros usaba una idea simple y útil: mostrar historia reciente, destacar el último valor y acompañarlo con la variación y la fecha del último dato. Podemos conservar esa lógica con un ggplot estático y muy poco código.

last <- tail(dolar, 1)
last_two <- tail(dolar$value, 2)
change <- diff(last_two)
change_pct <- change / last_two[1]

last_value <- formatC(
  last$value,
  format = "f",
  digits = 2,
  big.mark = ".",
  decimal.mark = ","
)

subtitle <- sprintf(
  "Dólar observado · var. diaria %+.2f (%+.2f%%)",
  change,
  100 * change_pct
)

ggplot2::ggplot(dolar, ggplot2::aes(date, value)) +
  ggplot2::geom_line(
    linewidth = 0.7,
    colour = "#0c1c32"
  ) +
  ggplot2::geom_point(
    data = last,
    size = 2.8,
    colour = "#b69b68"
  ) +
  ggplot2::scale_x_date(
    date_breaks = "6 months",
    date_labels = "%Y-%m",
    expand = ggplot2::expansion(mult = c(0, 0.01))
  ) +
  ggplot2::labs(
    title = paste("$", last_value),
    subtitle = subtitle,
    x = NULL,
    y = NULL,
    caption = paste(
      "Último dato:", format(last$date, "%d-%m-%Y"),
      "· Fuente: Banco Central de Chile"
    )
  ) +
  ggplot2::theme_minimal(base_family = "sans") +
  ggplot2::theme(
    panel.grid.minor = ggplot2::element_blank(),
    plot.title = ggplot2::element_text(
      size = 22,
      face = "bold",
      colour = "#0c1c32"
    ),
    plot.subtitle = ggplot2::element_text(colour = "#0c1c32"),
    plot.caption = ggplot2::element_text(colour = "#666666"),
    axis.text = ggplot2::element_text(colour = "#666666")
  )

La paleta usa el navy y el dorado del sitio de bcchr, pero los datos siguen siendo un tibble común. Para otro indicador basta cambiar el series_id y, si corresponde, adaptar el formato del eje o del último valor.