Uma série apenas

library(rbcb)
juros_selic<- get_series(11, # 11   Taxa de juros - Selic   % a.d.  D   04/06/1986  31/03/2026  BCB-Demab
                         start_date = "2020-01-01", # data inicial
                         end_date = "2026-03-31")   # data final
# Limite de Período: Consultas por período de datas são limitadas a 10 anos.
# Restrição de Volume: A partir de 26 de março de 2025, o volume de dados 
# retornados é limitado, sendo obrigatório o uso de filtros (como dataInicial e
# dataFinal) para a recuperação das informações.

# grafico de linha para a série temporal juros_selic$`11`
colnames(juros_selic)  # [1] "date" "11"  
## [1] "date" "11"
plot(juros_selic$date, juros_selic$`11`, type = "l", 
     main = "Taxa de Juros - Selic", 
     xlab = "Data", 
     ylab = "Taxa (% a.d.)", 
     col = "blue")

Várias séries

indicadores <- c("Câmbio" = 3698, "IPCA" = 433, "PIB" = 4382, "Selic" = 432)

dados2 <- rbcb::get_series(code = indicadores, start_date = "2023-01-01")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.0     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# transformar dados2 list para dataframe
class(dados2)   # [1] "list"
## [1] "list"
dados2_df <- Reduce(function(x, y) merge(x, y, by = "date"), dados2)
# plot de linha para as series de dados2_df
colnames(dados2_df) # [1] "date"   "Câmbio" "IPCA"   "PIB"    "Selic" 
## [1] "date"   "Câmbio" "IPCA"   "PIB"    "Selic"
# mutate PIB (está em milhoes de R$) dividindo por 1e6 para ficar em trilhoes
dados3<- dados2_df |> 
  dplyr::mutate(PIB = PIB / 1e6)

dados3 |> # o mesmo que %>%
  tidyr::pivot_longer(cols = -date, names_to = "serie", values_to = "valor") |> 
  ggplot2::ggplot() +
  ggplot2::aes(x = date, y = valor, color = serie) +
  ggplot2::geom_line(linewidth = 1) +
  ggplot2::scale_x_date(date_breaks = "3 month", date_labels = "%Y-%m") +
  ggplot2::labs(
    title = "Indicadores Econômicos",
    y = NULL,
    x = NULL,
    caption = "Dados: BCB | Elaboração: Análise Macro"
  ) +
  ggplot2::theme_gray(base_size = 16) +
  ggplot2::theme(legend.title = element_blank()) +
  # inclinar 90 graus a data do eixo horizontal
  ggplot2::theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))