Produzindo mapas no R com o pacote sf

Códigos
R base
Mapas
Autor

Jeanne Franco

Data de Publicação

4 de maio de 2024

Nesta seção explicarei como produzir mapas no R e quais pacotes são necessários para essa finalidade. Como exemplo, irei elaborar um mapa dos biomas brasileiros, incluindo a legenda, orientação, eixos e escala.

Pacote sf. Ilustração Alisson Horst.

Pacotes necessários

library(sf) # Permite ler arquivos shapefile
library(ggspatial) # Adicionar símbolo de orientação e escala
library(tidyverse) # Produzir mapa com ggplot2
library(cols4all) # Selecionar cores do mapa

Carregar arquivos shapefile em seu computador

Os dados foram retirados do site do IBGE. Para acessar os arquivos, você deve acessar o site, ir na aba de seleção à esquerda e fazer as seguintes etapas para baixar os dados dos biomas brasileiros:

    flowchart LR

      id1(Geociências) --> id2(Cartas e Mapas)
      id2(Cartas e Mapas) --> id3(Brasil: Informações ambientais)
      id3(Brasil: Informações ambientais) --> id4(Vetores)
      id4(Vetores) --> id5(Downloads - na aba esquerda)
      id5(Downloads - na aba esquerda) --> id6(Vetores)
      id6(Vetores) --> id7(Biomas_250mil)
      
      style id1 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id2 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id3 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id4 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id5 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id6 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id7 fill:#98D8AA,stroke:#333,stroke-width:3px

Após carregar os arquivos em sua pasta do diretório de trabalho, você também deve baixar os arquivos com os dados das regiões (Norte, Nordeste, Centro-Oeste, Sudeste e Sul) do Brasil. Para isso, faça as seguintes seleções:

    flowchart LR

      id1(Geociências) --> id2(Organização do território)
      id2(Organização do território) --> id3(Malhas territoriais)
      id3(Malhas territoriais) --> id4(Malha Municipal)
      id4(Malha Municipal) --> id5(Brasil)
      id5(Brasil) --> id6(Link Unidades da Federação)
      
      style id1 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id2 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id3 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id4 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id5 fill:#98D8AA,stroke:#333,stroke-width:3px
      style id6 fill:#98D8AA,stroke:#333,stroke-width:3px

Da mesma forma, salve todos os arquivos em uma mesma pasta.

Carregar dados no R

Você deve usar a função read_sf() para fazer a leitura dos arquivos. Após isso, use a função view() para visualizar a tabela com todos os dados.

Você também pode usar a função st_geometry() com a função plot() para visualizar o mapa inicial.

## Dados biomas

my_biom <- read_sf("lm_bioma_250.shp") 
view(my_biom)
plot(st_geometry(my_biom))

## Dados regiões do Brasil

my_br <- read_sf("BR_UF_2022.shp") 
view(my_br)
plot(st_geometry(my_br))

Produzir mapa

Primeiro, vamos selecionar as cores do mapa com o pacote cols4all, o qual permite escolher cores amigáveis para pessoas com daltonismo e cores categóricas, sequênciais, divergentes, entre outros. No código abaixo, é possível abrir uma tabela com a seleção de 6 cores (n = 6) do tipo categórica (type = "cat").

## Selecionar cores

c4a_table(n = 6, type = "cat") # Seleciona 6 cores do tipo categórica
c4a_types()

Fiz a seleção das cores abaixo presentes na palheta lakota que apresenta cores amigáveis para daltônicos “colorblind-friendly” (in portuguese).

#04A3BD
#F0BE3D
#931E18
#DA7901
#247D3F
#20235B

Agora, vamos criar o mapa usando os pacotes ggplot2, sf e ggspatial.

As seguintes camadas são utilizadas para elaborar o mapa:

  1. ggplot(): camada usada para criar mapa com ggplot2;

  2. geom_sf(): leitura de dados shapefile;

  3. scale_fill_manual(): definição das cores do mapa para cada bioma;

  4. annotation_north_arrow(): adição da orientação do mapa;

  5. annotation_scale(): adição da escala no mapa;

  6. labs(): adição dos títulos dos eixos x e y;

  7. ggtitle(): adição de um título ao mapa;

  8. theme_minimal(): definição do estilo do background do mapa;

  9. theme(): definição de informações do tamanho, cor e fonte do texto.

fig_mapa <- ggplot() + 
  geom_sf(data = my_br) +
  geom_sf(data = my_biom, aes(fill = Bioma), color = "#f7fcb9") +
  geom_sf_text(data = my_br, aes(label = SIGLA_UF), 
               size = 2.2, fontface = "bold", color = "#f7fcb9") +
  scale_fill_manual(values = c("#247D3F", "#F0BE3D", "#DA7901", 
                               "#04A3BD", "#931E18", "#20235B")) +
  annotation_north_arrow(style = 
                north_arrow_nautical(text_size = 7.5,
                          text_face = "bold"),
                         width = unit(1, "cm"),
                         height = unit(1, "cm")) +
  annotation_scale(location = "br", text_face = "bold",
                   height = unit(0.15, "cm")) +
  labs(x = "Longitude", y = "Latitude", fill = "") +
  ggtitle("Biomas do Brasil") +
  theme_minimal() +
  theme(axis.text = element_text(color = "black", 
                          face = "bold", size = 8.5,
                          family = "serif"),
        axis.title = element_text(color = "black", 
                           face = "bold", size = 10,
                           family = "serif"),
        title = element_text(color = "black", 
                           face = "bold", size = 10,
                           family = "serif"),
        legend.position = c(0.88, 0.24),
        legend.text = element_text(family = "serif",
                        face = "bold", size = 10))
fig_mapa

Com nosso mapa pronto, podemos salvá-lo nos formatos PDF ou PNG dentro pasta do diretório. O seguinte código com valores de resolução (dpi), altura (height), largura (width) e unidade de medida (units) devem ser definidos:

ggsave("fig_mapa.jpg", dpi = 300,
       width = 35, height = 15, 
       units = "cm", fig_mapa)

ggsave("fig_mapa.pdf", dpi = 300,
       width = 35, height = 15, 
       units = "cm", fig_mapa)