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

