knitr::opts_chunk$set(fig.align="center", fig.width=9, fig.height=7)
library(dplyr)
library(tidyr)
library(sf)
library(tmap)
library(knitr)
setwd(params$base_dir)
# Leitura e preparação da base de renda
renda = read.csv(params$csv_renda, header = FALSE, sep = ";", stringsAsFactors = FALSE)
colnames(renda) = c("municipio","Renda2000","Renda2010","Total")
renda$Renda2000 = as.numeric(gsub(",", ".", renda$Renda2000))
renda$Renda2010 = as.numeric(gsub(",", ".", renda$Renda2010))
P33_00 = quantile(renda$Renda2000, probs = 0.33, na.rm = TRUE)
P67_00 = quantile(renda$Renda2000, probs = 0.67, na.rm = TRUE)
P33_10 = quantile(renda$Renda2010, probs = 0.33, na.rm = TRUE)
P67_10 = quantile(renda$Renda2010, probs = 0.67, na.rm = TRUE)
renda$faixa_renda00 = cut(renda$Renda2000,
breaks = c(min(renda$Renda2000, na.rm = TRUE), P33_00, P67_00, max(renda$Renda2000, na.rm = TRUE)),
labels = c("Baixo", "Médio", "Alto"), right = TRUE, include.lowest = TRUE)
renda$faixa_renda10 = cut(renda$Renda2010,
breaks = c(min(renda$Renda2010, na.rm = TRUE), P33_10, P67_10, max(renda$Renda2010, na.rm = TRUE)),
labels = c("Baixo", "Médio", "Alto"), right = TRUE, include.lowest = TRUE)
nivel_renda = c("Baixo", "Médio", "Alto")
renda = renda %>% mutate(
evolucao = case_when(
match(faixa_renda10, nivel_renda) > match(faixa_renda00, nivel_renda) ~ "Melhorou",
match(faixa_renda10, nivel_renda) < match(faixa_renda00, nivel_renda) ~ "Piorou",
TRUE ~ "Igual"
),
evolucao = factor(evolucao, levels = c("Piorou", "Igual", "Melhorou")),
CD_MUN6 = substr(municipio, 1, 6)
)
# Leitura dos shapefiles e joins
muni_sf = st_read(params$shp_muni, quiet = TRUE)
meso_sf = st_read(params$shp_meso, quiet = TRUE)
micro_sf = st_read(params$shp_micro, quiet = TRUE)
muni_sf = muni_sf %>% mutate(CD_MUN6 = substr(CD_MUN, 1, 6))
mapa_renda = left_join(muni_sf, renda, by = "CD_MUN6")
mapa_renda = st_make_valid(mapa_renda)
meso_sf = st_make_valid(meso_sf)
micro_sf = st_make_valid(micro_sf)
if (st_crs(meso_sf) != st_crs(mapa_renda)) meso_sf = st_transform(meso_sf, st_crs(mapa_renda))
if (st_crs(micro_sf) != st_crs(mapa_renda)) micro_sf = st_transform(micro_sf, st_crs(mapa_renda))
# Tabela por Mesorregião
muni_renda_meso = st_join(mapa_renda, meso_sf["NM_MESO"], join = st_within)
tabela = muni_renda_meso %>%
st_drop_geometry() %>%
group_by(NM_MESO, evolucao) %>%
summarise(qtd = n(), .groups = "drop") %>%
tidyr::pivot_wider(names_from = evolucao, values_from = qtd, values_fill = 0) %>%
arrange(NM_MESO)
kable(tabela, caption = "Contagem de municípios por evolução (2000–2010), por Mesorregião")
Contagem de municípios por evolução (2000–2010), por
Mesorregião
| Campo das Vertentes |
3 |
25 |
8 |
| Central Mineira |
4 |
20 |
6 |
| Jequitinhonha |
3 |
46 |
2 |
| Metropolitana de Belo Horizonte |
14 |
74 |
17 |
| Noroeste de Minas |
2 |
13 |
4 |
| Norte de Minas |
0 |
85 |
4 |
| Oeste de Minas |
2 |
36 |
6 |
| Sul/Sudoeste de Minas |
25 |
109 |
12 |
| Triângulo Mineiro/Alto Paranaíba |
4 |
55 |
7 |
| Vale do Mucuri |
1 |
20 |
2 |
| Vale do Rio Doce |
17 |
67 |
18 |
| Zona da Mata |
30 |
92 |
20 |
# Mapa — Evolução 2000–2010
muni_micro = st_join(mapa_renda, micro_sf[c("CD_MICRO","NM_MICRO")], join = st_within)
tmap_mode("plot")
tm_shape(muni_micro) +
tm_fill("evolucao", style = "cat",
palette = c("Piorou" = "red", "Igual" = "white", "Melhorou" = "blue"),
title = "Evolução 2000–2010") +
tm_borders(alpha = 0.5) +
tm_layout(legend.outside = TRUE)

# Microrregiões (IDs) + Mesorregiões (contorno e nome)
tm_shape(micro_sf) +
tm_polygons(col = "white", border.col = "black") +
tm_text("CD_MICRO", size = 0.6, col = "black") +
tm_shape(meso_sf) +
tm_borders(lwd = 2, col = "red") +
tm_text("NM_MESO", size = 1, col = "blue", shadow = TRUE) +
tm_layout(title = "Microrregiões (IDs) e Mesorregiões de MG")
