Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
eval = FALSE,
fig.width = 10,
fig.height = 6,
dpi = 150,
warning = FALSE,
message = FALSE,
out.width = "100%"
)
# Caminho para as figuras pré-geradas (funciona tanto no source tree
# quanto no pacote instalado)
fig_path <- function(name) {
installed <- system.file("figures", name, package = "tesouror", mustWork = FALSE)
if (nzchar(installed)) return(installed)
file.path("..", "man", "figures", name)
}
## ----pacotes------------------------------------------------------------------
# library(tesouror)
# library(tidyverse)
# library(patchwork)
# library(sf)
# library(scales)
# library(ggrepel)
# library(MetBrewer)
# library(glue)
## ----dados--------------------------------------------------------------------
# tipos <- get_tc_transfer_types()
# estados <- get_tc_states()
#
# pe_code <- estados |>
# filter(str_detect(nome, "(?i)pernambuco")) |>
# pull(codigo)
#
# anos <- 2015:2026
#
# tc_pe_raw <- get_tc_by_municipality_detail(
# state = pe_code,
# year = anos
# ) |>
# rename(
# ano = an_distribuicao,
# mes = me_distribuicao,
# transferencia = sg_detalhe,
# valor = total
# )
## ----malha--------------------------------------------------------------------
# pe_sf <- read_rds(system.file("data", "pernambuco_sf.rds", package = "tesouror"))
#
# pe_lookup <- pe_sf |>
# st_drop_geometry() |>
# select(
# ibge7, municipio,
# rd = regiao_de_desenvolvimento,
# macrorregiao, mesorregiao, populacao
# ) |>
# mutate(co_ibge = as.integer(ibge7))
#
# pe_lookup |> count(rd, sort = TRUE)
## ----categorias---------------------------------------------------------------
# ordem_cat <- c(
# "Fundos de Participação",
# "Educação",
# "Compensações Tributárias",
# "Royalties e Recursos Naturais",
# "Transferências Especiais"
# )
#
# tc_pe <- tc_pe_raw |>
# mutate(
# transferencia_detalhe = transferencia,
# transferencia_principal = case_when(
# str_starts(transferencia, "AJUSTE FUNDEB") ~ "AJUSTE FUNDEB",
# str_starts(transferencia, "AFM/AFE") ~ "AFM/AFE",
# str_starts(transferencia, "CIDE") ~ "CIDE-Combustíveis",
# str_starts(transferencia, "Cessão") ~ "Cessão Onerosa",
# str_starts(transferencia, "FPM 1%") ~ "FPM 1%",
# str_starts(transferencia, "FPM") ~ "FPM",
# str_starts(transferencia, "FUNDEB") ~ "FUNDEB",
# str_starts(transferencia, "FEX") ~ "FEX",
# str_starts(transferencia, "IOF") ~ "IOF-Ouro",
# str_starts(transferencia, "ITR") ~ "ITR",
# str_starts(transferencia, "LC 173") ~ "LC 173/2020 (PFEC)",
# str_starts(transferencia, "LC 176") ~ "LC 176/2020 (ADO25)",
# str_starts(transferencia, "LC 201") ~ "LC 201/2023",
# str_starts(transferencia, "LC 87") ~ "LC 87/96 (Lei Kandir)",
# str_starts(transferencia, "Royalties") ~ "Royalties",
# TRUE ~ transferencia
# ),
# categoria = factor(case_when(
# transferencia_principal %in% c("FPM", "FPM 1%")
# ~ "Fundos de Participação",
# transferencia_principal %in% c("FUNDEB", "AJUSTE FUNDEB")
# ~ "Educação",
# transferencia_principal %in% c("CIDE-Combustíveis", "IOF-Ouro", "ITR",
# "LC 87/96 (Lei Kandir)", "LC 176/2020 (ADO25)",
# "LC 201/2023")
# ~ "Compensações Tributárias",
# transferencia_principal %in% c("Royalties", "Cessão Onerosa")
# ~ "Royalties e Recursos Naturais",
# transferencia_principal %in% c("FEX", "AFM/AFE", "LC 173/2020 (PFEC)")
# ~ "Transferências Especiais",
# TRUE ~ NA_character_
# ), levels = ordem_cat),
# data = make_date(ano, mes, 1L),
# valor_milhoes = valor / 1e6
# )
## ----agregacoes---------------------------------------------------------------
# tc_pe <- tc_pe |>
# left_join(pe_lookup, by = "co_ibge")
#
# tc_mun_ano <- tc_pe |>
# group_by(co_ibge, municipio, rd, macrorregiao, ano, categoria) |>
# summarise(valor = sum(valor, na.rm = TRUE), .groups = "drop")
#
# tc_mun_total <- tc_pe |>
# group_by(co_ibge, municipio, rd, macrorregiao, ano, populacao) |>
# summarise(valor_total = sum(valor, na.rm = TRUE), .groups = "drop") |>
# mutate(valor_per_capita = valor_total / populacao)
#
# ultimo_ano <- tc_mun_total |>
# mutate(ano = as.integer(ano)) |>
# filter(ano < max(ano)) |>
# pull(ano) |>
# max()
#
# tc_geo <- pe_sf |>
# mutate(co_ibge = as.integer(ibge7)) |>
# left_join(
# tc_mun_total |> filter(ano == ultimo_ano) |>
# select(-macrorregiao, -municipio),
# by = "co_ibge"
# )
#
# rd_bordas <- pe_sf |>
# filter(municipio != "Fernando de Noronha") |>
# group_by(regiao_de_desenvolvimento) |>
# summarise(geometry = st_union(geometry), .groups = "drop")
## ----paleta-------------------------------------------------------------------
# pal_cat <- met.brewer("Hokusai3", 5)
# cores_cat <- set_names(pal_cat, ordem_cat)
#
# rd_nomes <- sort(unique(pe_lookup$rd))
# pal_rd <- met.brewer("Klimt", length(rd_nomes))
# cores_rd <- set_names(pal_rd, rd_nomes)
#
# tema_tc <- theme_light(base_size = 10) +
# theme(
# plot.title = element_text(face = "bold", size = 12),
# plot.subtitle = element_text(color = "grey40"),
# legend.position = "bottom",
# legend.title = element_blank(),
# panel.grid.minor = element_blank(),
# strip.text = element_text(face = "bold"),
# axis.title.x = element_text(margin = margin(t = 10)),
# axis.title.y = element_text(margin = margin(r = 10))
# )
#
# tema_mapa <- theme_void(base_size = 11) +
# theme(
# plot.title = element_text(face = "bold", size = 11, hjust = 0.5),
# plot.subtitle = element_text(color = "grey40", size = 9, hjust = 0.5,
# margin = margin(b = 0, t = 5)),
# plot.caption = element_text(color = "grey50", size = 7, hjust = 1,
# margin = margin(t = 10)),
# legend.position = "bottom",
# legend.title = element_text(size = 9),
# legend.text = element_text(size = 8),
# plot.margin = margin(5, 5, 5, 5)
# )
#
# guia_barra <- guide_colorbar(
# barwidth = 15, barheight = 0.5,
# title.position = "top", title.hjust = 0.5
# )
#
# repel_mapa <- list(
# size = 2.5, lineheight = 0.85, colour = "grey50",
# fill = alpha("white", 0.9), label.size = 0.15,
# label.padding = unit(0.2, "lines"),
# force = 8, force_pull = 0.3, box.padding = 1.0, point.padding = 0.5,
# segment.color = "grey30", segment.size = 0.3, segment.linetype = "solid",
# arrow = arrow(length = unit(0.015, "npc"), type = "closed"),
# min.segment.length = 0, max.overlaps = 20, seed = 42
# )
#
# # Helper: adiciona labels ggrepel com estilo padronizado dos mapas
# # (ggrepel não suporta !!! do rlang, então usamos do.call)
# label_mapa <- function(data, mapping) {
# do.call(geom_label_repel, c(list(data = data, mapping = mapping), repel_mapa))
# }
## ----composicao_anual, fig.height = 8-----------------------------------------
# tc_anual_cat <- tc_pe |>
# group_by(ano, categoria) |>
# summarise(valor = sum(valor, na.rm = TRUE), .groups = "drop") |>
# mutate(valor_bi = valor / 1e9)
#
# p1 <- ggplot(tc_anual_cat, aes(ano, valor_bi, fill = categoria)) +
# geom_col(width = 0.9, alpha = 0.9) +
# scale_fill_manual(values = cores_cat) +
# scale_y_continuous(
# labels = label_number(suffix = " bi", decimal.mark = ","), expand = c(0, 0)
# ) +
# labs(
# title = glue("Transferências Constitucionais para Municípios de PE em {ultimo_ano}"),
# subtitle = "Valores nominais anuais, em R$ bilhões",
# x = "Ano", y = "Transferências"
# ) +
# scale_x_discrete(expand = c(0, 0)) + tema_tc
#
# p2 <- ggplot(tc_anual_cat, aes(ano, valor_bi, fill = categoria)) +
# geom_col(position = "fill", width = 0.9, alpha = 0.9) +
# scale_fill_manual(values = cores_cat) +
# scale_y_continuous(labels = label_percent(), expand = c(0, 0)) +
# labs(subtitle = "Composição percentual por categoria", x = NULL, y = NULL) +
# scale_x_discrete(expand = c(0, 0)) + tema_tc
#
# p1 / p2 + plot_layout(guides = "collect") &
# theme(legend.position = "bottom")
## ----fig-composicao-anual, echo = FALSE, eval = TRUE, out.width = "100%"------
knitr::include_graphics(fig_path("transferencias-01-composicao-anual.png"))
## ----series_mensais, fig.height = 7-------------------------------------------
# tc_mensal_cat <- tc_pe |>
# group_by(data, categoria) |>
# summarise(valor = sum(valor, na.rm = TRUE), .groups = "drop") |>
# mutate(valor_milhoes = valor / 1e6)
#
# tc_mensal_cat |>
# filter(
# data < max(data),
# !categoria %in% c("Royalties e Recursos Naturais", "Transferências Especiais")
# ) |>
# ggplot(aes(data, valor_milhoes, color = categoria)) +
# geom_line(linewidth = 0.4, alpha = 0.5) +
# geom_point(size = 0.5) +
# facet_wrap(~categoria, scales = "free_y", ncol = 1) +
# scale_color_manual(values = cores_cat) +
# scale_x_date(date_labels = "%Y", date_breaks = "1 year") +
# scale_y_continuous(labels = label_number(big.mark = ".", decimal.mark = ",")) +
# labs(title = "Principais Séries Mensais por Categoria",
# subtitle = "Valores nominais em R$ milhões",
# x = "Ano", y = "Transferências em R$ milhões") +
# tema_tc +
# theme(legend.position = "none",
# strip.background = element_rect(fill = "black", color = NA),
# strip.text = element_text(color = "white", face = "bold"))
## ----fig-series-mensais, echo = FALSE, eval = TRUE, out.width = "100%"--------
knitr::include_graphics(fig_path("transferencias-02-series-mensais.png"))
## ----top10_absoluto, fig.height = 5-------------------------------------------
# top10_abs <- tc_mun_total |>
# mutate(ano = as.integer(ano)) |>
# filter(ano == ultimo_ano) |>
# slice_max(valor_total, n = 10)
#
# ggplot(top10_abs, aes(valor_total / 1e6, fct_reorder(municipio, valor_total))) +
# geom_col(fill = "#2E86AB", width = 0.7) +
# geom_text(
# aes(label = paste0(
# "R$", format(round(valor_total / 1e6, 2), big.mark = ".", decimal.mark = ","), " mi"
# )),
# hjust = -0.1, size = 2.75
# ) +
# scale_x_continuous(
# expand = expansion(mult = c(0, 0.3)),
# breaks = scales::breaks_pretty(n = 10),
# labels = label_number(big.mark = ".", decimal.mark = ",")
# ) +
# labs(
# title = glue("Top 10 Municípios — Valor Absoluto ({ultimo_ano})"),
# subtitle = "Total de transferências constitucionais em R$ milhões",
# x = "Valores em R$ milhões", y = NULL
# ) +
# scale_y_discrete(expand = c(0, 0)) +
# tema_tc +
# theme(panel.grid.major.y = element_blank())
## ----fig-top10-absoluto, echo = FALSE, eval = TRUE, out.width = "100%"--------
knitr::include_graphics(fig_path("transferencias-03-top10-absoluto.png"))
## ----percapita_ranking, fig.height = 5----------------------------------------
# top10_pc <- tc_mun_total |>
# mutate(ano = as.integer(ano)) |>
# filter(ano == ultimo_ano, !is.na(valor_per_capita)) |>
# slice_max(valor_per_capita, n = 10)
#
# bot10_pc <- tc_mun_total |>
# mutate(ano = as.integer(ano)) |>
# filter(ano == ultimo_ano, !is.na(valor_per_capita)) |>
# slice_min(valor_per_capita, n = 10)
#
# p_top <- ggplot(top10_pc, aes(valor_per_capita, fct_reorder(municipio, valor_per_capita))) +
# geom_col(fill = "#2E86AB", width = 0.7) +
# geom_text(
# aes(label = paste0("R$ ", format(round(valor_per_capita, 0), big.mark = ".", decimal.mark = ","))),
# hjust = -0.1, size = 3
# ) +
# scale_x_continuous(expand = expansion(mult = c(0, 0.35))) +
# scale_y_discrete(expand = c(0, 0)) +
# labs(title = "Top 10: Maior per capita", x = "R$ por habitante", y = NULL) +
# tema_tc + theme(plot.title = element_text(size = 9)) +
# theme(panel.grid.major.y = element_blank())
#
# p_bot <- ggplot(bot10_pc, aes(valor_per_capita, fct_reorder(stringr::str_wrap(municipio, 12), valor_per_capita))) +
# geom_col(fill = "#C73E1D", width = 0.7) +
# geom_text(
# aes(label = paste0("R$ ", format(round(valor_per_capita, 0), big.mark = ".", decimal.mark = ","))),
# hjust = -0.1, size = 3
# ) +
# scale_x_continuous(expand = expansion(mult = c(0, 0.35))) +
# scale_y_discrete(expand = c(0, 0)) +
# labs(title = "Bottom 10: Menor per capita",
# x = "R$ por habitante", y = NULL) +
# tema_tc + theme(plot.title = element_text(size = 9)) +
# theme(panel.grid.major.y = element_blank())
#
# p_top + p_bot +
# plot_annotation(
# title = "Transferências Constitucionais Per Capita",
# subtitle = "R$ por habitante"
# )
## ----fig-percapita-ranking, echo = FALSE, eval = TRUE, out.width = "100%"-----
knitr::include_graphics(fig_path("transferencias-04-percapita-ranking.png"))
## ----percapita_serie----------------------------------------------------------
# tc_anual_pc <- tc_mun_total |>
# filter(!is.na(populacao)) |>
# group_by(ano) |>
# summarise(valor_total = sum(valor_total, na.rm = TRUE),
# populacao = sum(populacao, na.rm = TRUE), .groups = "drop") |>
# mutate(per_capita = valor_total / populacao, ano = as.integer(ano)) |>
# filter(ano < max(ano))
#
# ggplot(tc_anual_pc, aes(ano, per_capita)) +
# geom_line(color = "#2E86AB", linewidth = 1) +
# geom_point(color = "#2E86AB", size = 2.5) +
# scale_x_continuous(breaks = function(x) seq(min(x), max(x), by = 1),
# labels = label_number(big.mark = "", accuracy = 1)) +
# scale_y_continuous(
# labels = label_number(big.mark = ".", decimal.mark = ","),
# breaks = scales::breaks_pretty(n = 10)) +
# labs(title = "Transferências Per Capita: Total PE ao Longo do Tempo",
# subtitle = "R$ por habitante/ano", x = "Ano", y = "R$ per capita") +
# tema_tc
## ----fig-percapita-serie, echo = FALSE, eval = TRUE, out.width = "100%"-------
knitr::include_graphics(fig_path("transferencias-05-percapita-serie.png"))
## ----mapas_prep---------------------------------------------------------------
# tc_geo_cont <- tc_geo |> filter(municipio != "Fernando de Noronha")
# bbox <- st_bbox(tc_geo_cont)
#
# centroides_abs <- tc_geo_cont |>
# st_centroid() |> slice_max(valor_total, n = 8, na_rm = TRUE) |>
# mutate(x = st_coordinates(geometry)[, 1], y = st_coordinates(geometry)[, 2],
# label = paste0(municipio, "\nR$ ", round(valor_total / 1e6, 0), " mi"))
#
# centroides_pc <- tc_geo_cont |>
# st_centroid() |> slice_max(valor_per_capita, n = 8, na_rm = TRUE) |>
# mutate(x = st_coordinates(geometry)[, 1], y = st_coordinates(geometry)[, 2],
# label = paste0(municipio, "\nR$ ", format(round(valor_per_capita, 0),
# big.mark = ".", decimal.mark = ",")))
## ----mapa_absoluto, fig.height = 7--------------------------------------------
# ggplot() +
# geom_sf(data = tc_geo_cont, aes(fill = valor_total / 1e6),
# color = "grey70", linewidth = 0.05) +
# geom_sf(data = rd_bordas, fill = NA, color = "grey30", linewidth = 0.4) +
# coord_sf(xlim = c(bbox["xmin"] - 0.05, bbox["xmax"] + 0.05),
# ylim = c(bbox["ymin"] - 0.05, bbox["ymax"] + 0.25), expand = FALSE) +
# label_mapa(centroides_abs, aes(x = x, y = y, label = label)) +
# scale_fill_viridis_c(
# option = "inferno", name = "R$ milhões", trans = "log10",
# labels = label_number(big.mark = ".", decimal.mark = ","),
# breaks = c(1, 5, 10, 50, 200, 1000),
# na.value = "grey90", direction = -1, guide = guia_barra) +
# labs(title = "Transferências Constitucionais — Valor Absoluto",
# subtitle = glue("Total {ultimo_ano} (R$ milhões, escala log)"),
# caption = "Fonte: Tesouro Nacional/tesouror") +
# tema_mapa
## ----fig-mapa-absoluto, echo = FALSE, eval = TRUE, out.width = "100%"---------
knitr::include_graphics(fig_path("transferencias-06-mapa-absoluto.png"))
## ----mapa_percapita, fig.height = 7-------------------------------------------
# ggplot() +
# geom_sf(data = tc_geo_cont |> filter(!is.na(valor_per_capita)),
# aes(fill = valor_per_capita), color = "grey70", linewidth = 0.05) +
# geom_sf(data = rd_bordas, fill = NA, color = "grey30", linewidth = 0.4) +
# coord_sf(xlim = c(bbox["xmin"] - 0.05, bbox["xmax"] + 0.05),
# ylim = c(bbox["ymin"] - 0.05, bbox["ymax"] + 0.25), expand = FALSE) +
# label_mapa(centroides_pc, aes(x = x, y = y, label = label)) +
# scale_fill_viridis_c(
# option = "mako", name = "R$ per capita", direction = -1, na.value = "grey90",
# labels = label_number(big.mark = ".", decimal.mark = ","), guide = guia_barra) +
# labs(title = "Transferências Constitucionais — Per Capita",
# subtitle = glue("Total {ultimo_ano} (R$ por habitante)"),
# caption = "Malha: IBGE | População: SICONFI") +
# tema_mapa
## ----fig-mapa-percapita, echo = FALSE, eval = TRUE, out.width = "100%"--------
knitr::include_graphics(fig_path("transferencias-07-mapa-percapita.png"))
## ----mapa_rds, fig.height = 7-------------------------------------------------
# rd_bordas_proj <- rd_bordas |> st_transform(31985)
# bbox_bordas <- st_bbox(rd_bordas_proj)
#
# centroides_bordas <- rd_bordas_proj |>
# st_centroid() |>
# mutate(x = st_coordinates(geometry)[, 1], y = st_coordinates(geometry)[, 2],
# label = regiao_de_desenvolvimento)
#
# ggplot(rd_bordas_proj) +
# geom_sf(aes(fill = regiao_de_desenvolvimento), color = "white", linewidth = 0.3) +
# geom_label_repel(
# data = centroides_bordas, aes(x = x, y = y, label = label),
# size = 2.5, lineheight = 0.85, colour = "grey20",
# fill = alpha("white", 0.85), label.size = 0.15,
# label.padding = unit(0.15, "lines"),
# segment.color = "grey40", segment.size = 0.3,
# min.segment.length = 0.2, seed = 42, max.overlaps = 15) +
# scale_fill_manual(values = cores_rd) +
# coord_sf(xlim = c(bbox_bordas["xmin"] - 5000, bbox_bordas["xmax"] + 5000),
# ylim = c(bbox_bordas["ymin"], bbox_bordas["ymax"] + 15000),
# expand = FALSE) +
# labs(title = "Regiões de Desenvolvimento de Pernambuco",
# subtitle = "12 RDs definidas pela CONDEPE/FIDEM") +
# tema_mapa + theme(legend.position = "none")
## ----fig-mapa-rds, echo = FALSE, eval = TRUE, out.width = "100%"--------------
knitr::include_graphics(fig_path("transferencias-08-mapa-rds.png"))
## ----rd_serie-----------------------------------------------------------------
# tc_rd <- tc_pe |> filter(!is.na(rd))
#
# tc_rd_anual <- tc_rd |>
# group_by(ano, rd) |>
# summarise(valor = sum(valor, na.rm = TRUE), .groups = "drop") |>
# mutate(valor_bi = valor / 1e9)
#
# ggplot(tc_rd_anual, aes(ano, valor_bi, fill = rd)) +
# geom_col(width = 0.7) +
# scale_fill_manual(values = cores_rd) +
# scale_y_continuous(labels = label_number(suffix = " bi", decimal.mark = ","),
# breaks = scales::breaks_pretty(n = 10),
# expand = c(0, 0)) +
# labs(title = "Transferências por Região de Desenvolvimento",
# subtitle = "Valores nominais anuais, em R$ bilhões", x = NULL, y = "R$") +
# tema_tc + guides(fill = guide_legend(nrow = 3, byrow = TRUE))
## ----fig-rd-serie, echo = FALSE, eval = TRUE, out.width = "100%"--------------
knitr::include_graphics(fig_path("transferencias-09-rd-serie.png"))
## ----rd_composicao------------------------------------------------------------
# tc_rd_cat <- tc_rd |>
# filter(ano == ultimo_ano) |>
# group_by(rd, categoria) |>
# summarise(valor = sum(valor, na.rm = TRUE), .groups = "drop") |>
# mutate(valor_mi = valor / 1e6)
#
# ggplot(tc_rd_cat, aes(valor_mi, fct_reorder(rd, valor_mi, .fun = sum), fill = categoria)) +
# geom_col(width = 0.7) +
# scale_fill_manual(values = cores_cat) +
# scale_x_continuous(
# labels = label_number(big.mark = ".", decimal.mark = ","),
# breaks = scales::breaks_pretty(n = 10),
# expand = c(0,0)) +
# labs(title = glue("Composição por RD — {ultimo_ano}"),
# subtitle = "R$ milhões, por categoria de transferência", x = "R$ milhões", y = NULL) +
# tema_tc
## ----fig-rd-composicao, echo = FALSE, eval = TRUE, out.width = "100%"---------
knitr::include_graphics(fig_path("transferencias-10-rd-composicao.png"))
## ----rd_percapita, fig.height = 5---------------------------------------------
# rd_pop <- pe_lookup |> group_by(rd) |> summarise(populacao = sum(populacao))
#
# tc_rd_pc <- tc_rd |>
# filter(ano == ultimo_ano) |>
# group_by(rd) |>
# summarise(n_mun = n_distinct(co_ibge), valor_total = sum(valor, na.rm = TRUE),
# .groups = "drop") |>
# left_join(rd_pop, by = "rd") |>
# mutate(per_capita = valor_total / populacao)
#
# ggplot(tc_rd_pc, aes(per_capita, fct_reorder(rd, per_capita))) +
# geom_col(aes(fill = rd), width = 0.8, show.legend = FALSE) +
# geom_text(aes(label = paste0("R$ ", format(round(per_capita, 0),
# big.mark = ".", decimal.mark = ","),
# " (", n_mun, " mun.)")),
# hjust = -0.05, size = 3) +
# scale_fill_manual(values = cores_rd) +
# scale_x_continuous(expand = expansion(mult = c(0, 0.35))) +
# labs(
# title = "Transferência Per Capita por Região de Desenvolvimento",
# subtitle = glue("{ultimo_ano} R$ por habitante"),
# x = "R$ por habitante", y = NULL
# ) +
# tema_tc +
# theme(panel.grid.major.y = element_blank())
## ----fig-rd-percapita, echo = FALSE, eval = TRUE, out.width = "100%"----------
knitr::include_graphics(fig_path("transferencias-11-rd-percapita.png"))
## ----rd_percapita_serie-------------------------------------------------------
# tc_rd_pc_serie <- tc_rd |>
# group_by(ano, rd) |>
# summarise(valor_total = sum(valor, na.rm = TRUE), .groups = "drop") |>
# left_join(rd_pop, by = "rd") |>
# mutate(per_capita = valor_total / populacao, ano = as.integer(ano)) |>
# filter(ano < max(ano))
#
# ggplot(tc_rd_pc_serie, aes(ano, per_capita, color = rd)) +
# geom_line(linewidth = 0.7) + geom_point(size = 1.2) +
# scale_color_manual(values = cores_rd) +
# scale_y_continuous(
# labels = label_number(big.mark = ".", decimal.mark = ","),
# breaks = scales::breaks_pretty(n = 8)) +
# scale_x_continuous(
# breaks = function(x) seq(min(x), max(x), by = 1),
# labels = label_number(big.mark = "", accuracy = 1),
# expand = c(0.01,0.01)
# ) +
# labs(
# title = "Evolução das Transferências Per Capita por RD",
# subtitle = "R$ por habitante/ano",
# x = "Ano", y = "R$ per capita"
# ) +
# tema_tc +
# guides(color = guide_legend(nrow = 3, byrow = TRUE))
## ----fig-rd-percapita-serie, echo = FALSE, eval = TRUE, out.width = "100%"----
knitr::include_graphics(fig_path("transferencias-12-rd-percapita-serie.png"))
## ----mapa_rd_percapita, fig.height = 7----------------------------------------
# tc_rd_pc_geo <- rd_bordas |>
# left_join(tc_rd_pc, by = c("regiao_de_desenvolvimento" = "rd"))
#
# centroides_rd <- tc_rd_pc_geo |>
# st_centroid() |>
# mutate(x = st_coordinates(geometry)[, 1], y = st_coordinates(geometry)[, 2],
# label = paste0(regiao_de_desenvolvimento, "\nR$ ",
# format(round(per_capita, 1), big.mark = ".", decimal.mark = ",")))
#
# ggplot() +
# geom_sf(data = tc_rd_pc_geo, aes(fill = per_capita),
# color = "white", linewidth = 0.4) +
# label_mapa(centroides_rd, aes(x = x, y = y, label = label)) +
# coord_sf(xlim = c(bbox["xmin"] - 0.05, bbox["xmax"] + 0.05),
# ylim = c(bbox["ymin"] - 0.05, bbox["ymax"] + 0.25), expand = FALSE) +
# scale_fill_distiller(palette = "YlGnBu", direction = 1, name = "R$ per capita",
# labels = label_number(big.mark = ".", decimal.mark = ","),
# guide = guia_barra) +
# labs(title = "Transferências Per Capita por Região de Desenvolvimento",
# subtitle = glue("{ultimo_ano} — R$ por habitante/ano"),
# caption = "Fonte: Tesouro Nacional/tesouror | CONDEPE/FIDEM") +
# tema_mapa
## ----fig-mapa-rd-percapita, echo = FALSE, eval = TRUE, out.width = "100%"-----
knitr::include_graphics(fig_path("transferencias-13-mapa-rd-percapita.png"))
## ----mapas_categoria, fig.height = 10, fig.width = 10-------------------------
# tc_cat_geo <- tc_mun_ano |>
# filter(ano == ultimo_ano) |>
# right_join(pe_sf |> mutate(co_ibge = as.integer(ibge7)) |> select(co_ibge, geometry),
# by = "co_ibge") |>
# st_as_sf() |>
# mutate(valor_mi = valor / 1e6) |>
# filter(municipio != "Fernando de Noronha")
#
# ggplot(tc_cat_geo) +
# geom_sf(aes(fill = valor_mi), color = "grey80", linewidth = 0.03) +
# geom_sf(data = rd_bordas, fill = NA, color = "grey30", linewidth = 0.3) +
# facet_wrap(~categoria, ncol = 2) +
# scale_fill_viridis_c(
# option = "mako", name = "R$ mi", trans = "log10",
# labels = label_number(big.mark = ".", decimal.mark = ","),
# na.value = "grey90", direction = -1, guide = guia_barra) +
# labs(title = "Distribuição Espacial por Categoria de Transferência",
# subtitle = glue("{ultimo_ano} — escala logarítmica"),
# caption = "Fonte: Tesouro Nacional/tesouror") +
# tema_mapa + theme(strip.text = element_text(face = "bold", size = 9))
## ----fig-mapas-categoria, echo = FALSE, eval = TRUE, out.width = "100%"-------
knitr::include_graphics(fig_path("transferencias-14-mapas-categoria.png"))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.