Olá! Estou criando um rmarkdown em que vou gerar gráficos dos 27 Estados brasileiros que apontem em quais municípios possuem determinada matrícula. Para isso estou usando os pacotes sf e geobr. Inicialmente, consigo criar o gráfico usando o filter por estado nesse código:
library(tidyverse)
library(sf)
library(geobr)
ggplot() +
geom_sf(data = mapas %>%
filter(abbrev_state == "CE")) +
geom_sf(data = mapas_int %>%
filter(name_state == "Ceará") %>%
group_by(code_muni) %>%
summarise(QT_MAT_MED_INT = sum(QT_MAT_MED_INT)), aes(fill = QT_MAT_MED_INT)) +
scale_fill_gradientn(colours = c("light green", "green", "yellow")) +
theme_minimal()
em que o objeto “mapas” tem todos os municípios e o objeto “mapas_int” tem apenas aqueles que possuem matrículas que quero destacar, por isso uso os dois sobrepostos no ggplot.
o que gostaria de fazer é um looping que gere o gráfico dos 27 estados sem precisar trocar o parâmetro do filter. Pesquisando no fórum encontrei esse tópico e tentei adaptar o código conforme abaixo, mas ele só me retorna o mapa do Brasil 27 vezes, e não de cada estado.
todos_os_estados <- unique(mapas_int$code_state)
for (estado in todos_os_estados) {
cat("<br>", "<h2>", estado, "</h2>")
grafico <- mapas_int %>%
filter(mapas_int$name_state == estado) %>%
ggplot() +
geom_sf(data = mapas) +
geom_sf(data = mapas_int %>%
group_by(code_muni) %>%
summarise(QT_MAT_MED_INT = sum(QT_MAT_MED_INT)), aes(fill = QT_MAT_MED_INT)) +
scale_fill_gradientn(colours = c("light green", "green", "yellow")) +
theme_minimal()
print(grafico)
cat("<br>")
}
Alguém tem ideia de onde está o problema?
Obrigado!