Decido novamente usar dados do SIDRA para criar visualizações no R. Em particular, quis ver em que municípios se concentra a maior parte do PIB do país.

library(sidrar)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── 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
theme_set(theme_void())
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
# devtools::install_github("rpradosiqueira/brazilmaps")
library(brazilmaps)
library(sf)
## Linking to GEOS 3.11.0, GDAL 3.5.3, PROJ 9.1.0; sf_use_s2() is TRUE

O primeiro passo foi baixar a Tabela 5938 do SIDRA, em nível municipal, a partir do pacote sidrar.

pib_municipios <- 
  get_sidra(x = "5938",
            period = "2021",
            variable = 37,
            geo = "City") |> 
  clean_names()
## Considering all categories once 'classific' was set to 'all' (default)

Com os dados baixados, selecionei apenas as colunas que me interessavam e criei uma extra chamada indicadora, onde comparei o valor_acumulado do PIB para decidir se era parte dos maiores ou dos menores.

pib_municipios_limpo <-
  pib_municipios |> 
  select(municipio, municipio_codigo, valor) |> 
  arrange(desc(valor)) |> 
  mutate(valor_acumulado = cumsum(valor)) |> 
  mutate(indicador = ifelse(valor_acumulado > sum(valor/2), "Menores PIBs", "Maiores PIBs"))

Com isso, descobri que apenas 87 municípios são responsáveis por metade do PIB do país:

pib_municipios_limpo |> 
  count(indicador)
##      indicador    n
## 1 Maiores PIBs   87
## 2 Menores PIBs 5483

A seguir, li informações sobre mapas em nível municipal e juntei essas informações com as do PIB, via código do município, para poder plotar o resultado abaixo.

mapa_br <- 
  get_brmap("City") |> 
  mutate(municipio_codigo = as.character(City))

mapa_br |> 
  left_join(pib_municipios_limpo, by = "municipio_codigo") |> 
  ggplot() +
  geom_sf(aes(fill = indicador), colour = "#3F0051") +
  scale_fill_viridis_d(direction = -1) + 
  labs(fill = "Divisão do PIB",
       title = "87 Municípios contribuem com 50% do PIB do Brasil", caption = "marcusnunes.me") +
  theme_void()
## old-style crs object detected; please recreate object with a recent sf::st_crs()