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