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))
