Mapas Coropléticos

Curso de análise e visualização de dados

Visualização de Dados 2

Mapas Coropléticos

Mapas são objetos poligonais. Para produzirmos um mapa coroplético, precisamos de uma variável georreferenciada, que indique as coordenadas de cada polígono a ser representado. O pacote ‘geobr’ facilita este processo, incorporando as coordenadas geográficas de mapas brasileiros produzidos pelo IBGE. O pacote ‘sf’ provê operações geométricas que interpretam as coordenadas poligonais como vetores no R.

Solicitar pacotes

#install.packages("geobr")
#install.packages("sf")
#install.packages("patchwork")

library(geobr)
library(sf)
library(ggplot2)
library(patchwork)

Plotar um mapa simples do Brasil (com divisas de estados)

# Coletar dados de divisas de estados no mapa brasileiro em 2020
divisoes_uf <- read_state(code_state="all", year=2020)

# Plotar mapa
divisoes_uf %>% 
  ggplot() +
  geom_sf(fill="green4", color="yellow2", size=.15)

# Customizando o mapa
ggplot() +
  geom_sf(data = divisoes_uf, fill="#2D3E50", color="#FEBF57", size=.15) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="Mapa do Brasil", size=8)

Plotar mapa do Rio de Janeiro (com divisas de municípios)

# Coletar dados de divisas de municípios no mapa do Rio de Janeiro em 2022
RJ_municipios <- read_municipality(
  code_muni = "RJ", 
  year= 2022,
  showProgress = FALSE
)

# Plotar mapa
ggplot() +
  geom_sf(data=RJ_municipios, fill="blue3", color="white", size=.10) +
  labs(subtitle="Municípios do Rio de Janeiro, 2022", size=8) +
  theme_minimal()

Para conhecer todas as funções do pacote geobr

# Criar dataframe para apresentar os dados disponíveis
geobr_funcoes <- list_geobr()

Plotar evolução dos mapas brasileiros lado a lado

# Coletando dados históricos de fronteiras
fronteiras_1872 <- read_state(code_state="all", year=1872)
fronteiras_1900 <- read_state(code_state="all", year=1900)
fronteiras_1933 <- read_state(code_state="all", year=1933)
fronteiras_1960 <- read_state(code_state="all", year=1960)
fronteiras_1991 <- read_state(code_state="all", year=1991)
fronteiras_2020 <- read_state(code_state="all", year=2020)

# Gerandos os mapas individuais
mapa1872 <- ggplot() +
  geom_sf(data=fronteiras_1872, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="1872", size=8)

mapa1900 <- ggplot() +
  geom_sf(data=fronteiras_1900, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="1900", size=8)

mapa1933 <- ggplot() +
  geom_sf(data=fronteiras_1933, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="1933", size=8)

mapa1960 <- ggplot() +
  geom_sf(data=fronteiras_1960, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="1960", size=8)

mapa1991 <- ggplot() +
  geom_sf(data=fronteiras_1991, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="1991", size=8)

mapa2020 <- ggplot() +
  geom_sf(data=fronteiras_2020, fill="grey25", color="grey75", size=.07) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
  labs(subtitle="2020", size=8)

# Plotando os mapas lado a lado
(mapa1872 | mapa1900 | mapa1933) / (mapa1960 | mapa1991 | mapa2020)

Plotar mapa de reservas indígenas

# Coletar dados de reservas indígenas
reservas <- geobr::read_indigenous_land(201907)

# Criar objeto para selecionar o estado do Acre
AC_municipios <- read_municipality( code_muni = "AC", year= 2020)

# Plotar o estado do Acre com divisas dos municípios
plot(AC_municipios$geom)

# Plotar o estado do Acre com divisas dos municípios e em cores
ggplot() +
    geom_sf(data=AC_municipios, fill="#2D3E50", color="#FEBF57", size=.15) + 
      theme_minimal() +
      theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank()) +
      labs(subtitle="Acre", size=8)

# Selecionar somente as reservas Kaxinawá
reservas %>% 
  mutate(row = row_number()) %>% 
  mutate(kaxinawa = stringr::str_detect(etnia_nome, "[K|k]axinaw[a|á]")) %>% 
  filter(kaxinawa == TRUE) %>% 
  select(row)

# Plotar apenas áreas específicas de reservas no Acre (todas as áreas Kaxinawá)
ggplot() +
  geom_sf(data=AC_municipios$geom, color="#bcbcbc", size=.15, show.legend = FALSE) +
  geom_sf(data=reservas$geom[14], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[189], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[257], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[260], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[261], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[262], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[263], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[264], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[265], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[266], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[267], fill="#FE0000", color="#FE0000", size=.15) +
  geom_sf(data=reservas$geom[281], fill="#FE0000", color="#FE0000", size=.15) +
    labs(subtitle="Kaxinawá", size=8) +
  theme_minimal() +
  theme(axis.title=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank())

Plotar mapa eleitoral do segundo turno em 2022

# Coletando os dados de resultados eleitorais por estados em 2022
resultados_uf_2022 <- read.csv(
  "https://raw.githubusercontent.com/coLAB-UFF/docs/main/data/resultados_uf_2022.csv")

# Mergindo as bases de dados (resultados eleitorais + divisas de estados)
divisoes_uf <- read_state(code_state="all", year=2020) %>% 
  mutate(uf = abbrev_state)

mapa <- left_join(divisoes_uf, resultados_uf_2022, by = "uf")

# Plotando o mapa eleitoral
ggplot() +
  geom_sf(data = mapa, aes(fill = vencedor), color = NA, size = .15) +
  labs(subtitle = "Resultado: Eleições Presidenciais 2022", size = 8) +
  scale_fill_manual(values = c("seagreen", "red3")) +
  theme_minimal()