Este relatório apresenta a distribuição espacial das notificações de COVID-19 no estado de Minas Gerais, utilizando dados georreferenciados.
Baixando a malha digital oficial do IBGE via pacote
geobr.
Nesta etapa, criamos a base de dados. Nota: Abaixo estou simulando os dados. Quando você tiver sua planilha pronta, substituirá esta parte.
set.seed(123) # Garante que os dados sejam sempre iguais
MG2022_join <- mapa_mg %>%
mutate(
# Cria frequência aleatória
Freq = runif(n(), min = 0, max = 25000)
) %>%
mutate(
# Cria as categorias (faixas de valores)
cat = cut(Freq,
breaks = c(-Inf, 0, 5, 50, 1000, 1500, 2000, Inf),
labels = c("0,00 casos", "1,0 a 5,0", "5,0 a 50,0",
"50,0 a 1.000,0", "1.000,0 a 1.500,0",
"1.500,0 a 2.000,0", "> 20.000,0"))
)Abaixo, o mapa coroplético gerado a partir dos dados processados.
ggplot(MG2022_join) +
# 1. Desenha o mapa e pinta conforme a categoria 'cat'
geom_sf(aes(fill = cat), colour = "black", size = 0.1) +
# 2. Define as cores (Paleta Dark2)
scale_fill_brewer(palette = "Dark2") +
# 3. Adiciona escala e norte
annotation_scale(location = "bl", width_hint = 0.3) +
annotation_north_arrow(
location = "tl",
style = north_arrow_fancy_orienteering()
) +
# 4. Formata os eixos de latitude/longitude
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
# 5. Títulos e Legendas
labs(
title = "Mapa de Calor COVID-19",
subtitle = "Minas Gerais - 2022",
fill = "Notificação\nde COVID",
x = NULL, y = NULL
) +
# 6. Tema visual limpo
theme_void() +
theme(
legend.position = "right",
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
plot.subtitle = element_text(hjust = 0.5, color = "gray50")
)Abaixo, o mapa interativo. Passe o mouse sobre as regiões para ver os detalhes ou use a barra superior para dar zoom.
library(plotly) # Carregar a biblioteca de interatividade
# 1. Criamos o objeto do mapa (chamaremos de 'p')
p <- ggplot(MG2022_join) +
geom_sf(aes(fill = cat,
# AQUI ESTÁ O TRUQUE: Criamos o texto que aparece ao passar o mouse
text = paste("Município:", name_muni, "<br>",
"Situação:", cat)),
colour = "black", size = 0.05) +
scale_fill_brewer(palette = "Dark2") +
labs(fill = "Notificação", x = NULL, y = NULL) +
theme_void() +
theme(legend.position = "right")
# 2. A mágica acontece aqui: convertemos 'p' para interativo
# tooltip = "text" diz para mostrar apenas o que escrevemos na linha 'text' acima
ggplotly(p, tooltip = "text") %>%
layout(height = 600) # Ajusta a altura na tela