A gente tem que fazer um mapa! Ou seja, a gente vai representar uma
variável em um mapa.
Isso pode ser feito de várias formas:
cada unidade territorial pode ter um tamanho (bullets maiores ou menores de acordo com a intensidade da variável)
cada unidade territorial pode ter uma cor diferente também de acordo com a intensidade da variável
ou simplesmente você pode querer colorir as coisas de uma forma sua
Pra começar, a gente vai fazer um mapa para os estados brasileiros. Vamos começar por este porque um mapa pode ser intensivo computacionalmente.
Como você não tem um mapa aí guardado no seu PC, a primeira coisa é IMPORTAR UM SHAPEFILE!
library(viridis)
library(ggplot2)
library(haven)
library(tidyverse)
library(readxl)
library(RColorBrewer)
library(sf)
library(sidrar)
Antes de ir para o mapa você precisa dizer qual diretório que o shapefile está. Ou seja, você precisa especificar com o setwd…
#especificando o diretório
setwd("G:/Meu Drive/AGR")
#carregando o shape dos estados
se <- st_read(".", "BR_UF_2021")
## Reading layer `BR_UF_2021' from data source `G:\Meu Drive\AGR' using driver `ESRI Shapefile'
## Simple feature collection with 27 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -73.99045 ymin: -33.75118 xmax: -28.84764 ymax: 5.271841
## Geodetic CRS: SIRGAS 2000
#se2 <- st_read("G:/Meu Drive/AGR/BR_UF_2021.shp")
#"G:\Meu Drive\AGR\BR_UF_2021.shp"
Dá uma olhada no se (shape dos estados).
teste <- ggplot(se) +
geom_sf(aes(fill = CD_UF)) +
theme_minimal()
teste
Se você entendeu até agora, toda construção de mapas daqui pra frente depende só da sua criatividade e razoabilidade.
Amanhã tem aula de Desenvolvimento (ERU 487), um grupo vai falar
sobre milho. A tarefa deles é fazer um “panorama do milho no
Brasil”.
A gente pode, por exemplo, fazer um mapa no qual a intensidade das cores
tenha a ver com a produção de milho.
Vamos usar o sidrar para olhar a produção de leite em cada estado do Brasil
Antes vamos só mostrar o total de milho ao longo do tempo para vocês verem o tanto que a produção de milho aumentou.
#https://apisidra.ibge.gov.br/values/t/839/n1/all/v/214/p/all/c81/all
m1 =
'/t/839/n1/all/v/214/p/all/c81/all' %>%
get_sidra(api=.)
Um gráfico de linhas simples
ggplot(m1, aes(x=Ano, y=Valor, group=`Produto das lavouras temporárias`))+geom_line()
Um gráfico um pouco melhor
ggplot(m1, aes(x = Ano, y = Valor/1000000, color = `Produto das lavouras temporárias`, group = `Produto das lavouras temporárias`)) +
geom_line(size = 1) + # Aumenta a espessura da linha
geom_point(size = 2) + # Adiciona pontos para destacar os valores
labs(title = "",
x = "",
y = "Produção (mi, ton)",
color = "") + # Título e rótulos dos eixos
theme_minimal() + # Tema minimalista para um visual mais limpo
theme(legend.position = "bottom") # Mover a legenda para baixo
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
O recente aumento da produção é por conta do milho de 2a safra! Ou seja, o que era uma safra secundária é a safra principal agora.
A mesma coisa, só que em barras
# Filtrar os dados para remover o grupo "Total"
m1_filtered <- m1 %>%
filter(`Produto das lavouras temporárias` != "Total")
# Criar o gráfico de barras empilhadas sem o grupo "Total"
ggplot(m1_filtered, aes(x = Ano, y = Valor / 1000000, fill = `Produto das lavouras temporárias`)) +
geom_bar(stat = "identity", position = "stack") + # Gráfico de barras empilhadas
labs(title = "",
x = "",
y = "Produção (mi, ton)",
fill = "") + # Título e rótulos dos eixos
theme_minimal() + # Tema minimalista para um visual mais limpo
theme(legend.position = "bottom") # Mover a legenda para baixo
Beleza, voltemos ao mapa porque a gente quer mostrar onde que esse milho está sendo produzido.
#https://apisidra.ibge.gov.br/values/t/839/n3/all/v/214/p/all/c81/31693
m2 =
'/t/839/n3/all/v/214/p/all/c81/31693' %>%
get_sidra(api=.)
Olhe o nosso arquivo do mapa dos estados (se) e olhe o m2. Veja que o código de Rondônia é 11 nos dois arquivos. Sim, agradeça a Deus!
Vamos primeiro filtrar um ano específico, 2022, só para ficar mais didático. E depois a gente vai criar uma variável “id” para ligar as duas bases de dados.
m3<-m2%>%filter(Ano==2022)
m3$id<-as.numeric(m3$`Unidade da Federação (Código)`)
se$id<-as.numeric(se$CD_UF)
se <- merge(se, m3[, c("id", "Valor")], by = "id", all.x = TRUE)
Agora veja que é possível fazer um mapa com a quantidade produzida em cada estado
map1 <- ggplot(se) +
geom_sf(aes(fill = Valor)) +
theme_minimal()
map1
map2 <- ggplot(se) +
geom_sf(aes(fill = Valor/1000000)) + # Preenchimento baseado na variável 'Valor'
scale_fill_viridis_c(name = "Milho (mi, ton)", option = "viridis") + # Escala de cores viridis
labs(title = "", x = "", y = "") + # Remover títulos e rótulos dos eixos
theme_minimal() + # Tema minimalista
theme(legend.position = "bottom") # Mover a legenda para a parte inferior
map2
Um mapa para municípios só vai ficar um pouco mais intensivo computacionalmente. Entretanto, a ideia é exatamente a mesma:
ter um shape
ter algo que ligue a variável que você quer representar com o mapa (código da UF, código do município…)
Amanhã a gente tenta fazer ao vivo um mapa com o facet_wrap. O que a variável vai fazer é fazer um mapa para cada ano. Aí vai ser possível ver se o Mato Grosso é o principal produtor de milho desde sempre ou se isso é coisa nova.
Dá para olhar a evolução do Mato Grosso também via gghighlight.