Criando mapas com os pacotes tidyverse e geobr

Utilizando dados sobre coleta e tratamento de esgoto no Estado De São Paulo

Data do post: 27/07/2020

Como eu estou meses sem postar nada no blog, resolvi postar um código adaptado, referente a um projeto final que realizei para a disciplina “FLS6397 - Introdução à Análise de Dados, Programação e Visualização para as Ciências Sociais”. A disciplina ocorreu no primeiro semestre de 2020, na FFLCH/USP (porém devido à pandemia, a maior parte das aulas foi online). Na página da disciplina, está disponível tutoriais com todo o conteúdo da disciplina, de graça e aberto para todes!

As instruções para a realização do projeto estão disponíveis na página da disciplina.

Dados utilizados

Neste post, irei focar em mostrar como abri os dados, e utilizando principalmente o tidyverse (Wickham, Averick, et al. 2019) e o pacote geobr (Pereira and Goncalves 2020), criei mapas com esses dados.

Pacotes necessários

library(tidyverse)
library(ggplot2)
library(dplyr)
library(magrittr)
library(geobr)
# install.packages("pdftables")
library(pdftables)
library(readr)
library(stringr)
library(abjutils)
library(ggspatial)
library(tibble)
library(knitr)
library(sf)

Abrir e arrumar as bases brutas

Dados de Saneamento

O primeiro passo é fazer o download do arquivo PDF referente ao Apêndice C e converter em CSV. A função download.file() possibilita fazer download de arquivos diretamente do R.

# Link do relatório
url <-
  "https://cetesb.sp.gov.br/aguas-interiores/wp-content/uploads/sites/12/2019/10/Ap%C3%AAndice-C_Dados-de-Saneamento-por-Munic%C3%ADpio.pdf" 


#Fazer o download do arquivo PDF

download.file(url, # URL do arquivo a ser baixado
              destfile = "dados/apendice_c_2018.pdf", # Informar onde quer que seja salvo, e com qual nome e extensão 
              method = "curl" # Método utilizado para o download
              )

Para fazer a conversão, utilizei o pacote {pdftables} (Persson 2016), que possibilita converter o arquivo PDF para CSV diretamente do R, através da API (e omiti a minha chave da API no código):

# Converter o arquivo PDF em CSV. Utilizei a API que obtive no site, mas para compilar, omiti a API key.

pdftables::convert_pdf("dados/apendice_c_2018.pdf",
                       # Arquivo para converter
                       output_file = "dados/apendice_c_2018.csv",
                       #  Informar onde quer o arquivo gerado
                       # seja salvo, e com qual nome e extensão
                       api_key = "..." # Chave da API, gerada através do site.
                       )

A tabela convertida em .csv pode ser acessada neste link. O próximo passo é carregar a base, usando a função readr::read_csv():

apendice_c_2018 <-
  readr::read_csv(
    "dados/apendice_c_2018.csv", # Qual arquivo CSV quero carregar
    col_names = c(
      # define o nome das colunas
      "ugrhi",
      "municipio",
      "consessao",
      "pop_urbana",
      "atendimento_coleta_porc",
      "atendimento_tratamento_porc",
      "eficiencia",
      "carga_poluidora_potencial",
      "carga_poluidora_remancescente",
      "ictem",
      "corpo_receptor"
    ),
    locale = readr::locale(encoding = "ISO-8859-1"),
    # encoding dos dados
    skip = 5 # Quantas linhas para pular no CSV antes de começar a ler os dados.
  )
  • A base deve conter 645 linhas, referente ao número de municípios no estado de São Paulo3:
nrow(apendice_c_2018) # consulta quantas linhas tem na base
## [1] 701

A base contém mais linhas do que municípios. O código abaixo retira linhas que apenas contém NA, e linhas que não apresentam dados dos municípios:

apendice_c_filtrado <- apendice_c_2018 %>%
  # Filtrar linhas que não contém nome de municípios
  dplyr::filter(!municipio %in% c("Estado de São Paulo", "Município", NA, "MUNICÍPIO")) 

Agora a base tem 645 linhas, o que corresponde aos 645 municípios do estado de SP. É importante também verificar o tipo de dados nas colunas:

tibble::glimpse(apendice_c_filtrado)
## Rows: 645
## Columns: 11
## $ ugrhi                         <chr> "1", "1", "1", "2", "2", "2", "2", "2...
## $ municipio                     <chr> "Campos do Jordão", "Santo Antônio do...
## $ consessao                     <chr> "SABESP", "SABESP", "SABESP", "SAAE",...
## $ pop_urbana                    <chr> "51440", "4033", "5224", "35604", "18...
## $ atendimento_coleta_porc       <chr> "52", "47", "92", "70", "91", "100", ...
## $ atendimento_tratamento_porc   <chr> "100", "100", "75", "28", "100", "0",...
## $ eficiencia                    <chr> "97", "80", "76", "70", "82", NA, "62...
## $ carga_poluidora_potencial     <chr> "2.778", "218", "282", "1.923", "101"...
## $ carga_poluidora_remancescente <chr> "1.377", "136", "133", "1.659", "26",...
## $ ictem                         <chr> "6,06", "4,65", "6,14", "2,56", "8,22...
## $ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Guaçu e af...

Algumas colunas são de dados numéricos mas que foram carregadas como texto (<chr>), portanto devem ser convertidas para o tipo correto (possível com a função dplyr::mutate():

apendice_c <- apendice_c_filtrado %>%
  dplyr::mutate(
    pop_urbana = as.double(pop_urbana) , 
    atendimento_coleta_porc = as.double(atendimento_coleta_porc),
    atendimento_tratamento_porc = as.double(atendimento_tratamento_porc),
    eficiencia = as.double(eficiencia),
    
    # As conversões abaixo tem uma etapa a mais, devido à padronização diferente utilizada na base, 
    #com o ponto e a vírgula para representar as casas decimais:
    carga_poluidora_potencial =  stringr::str_replace_all(carga_poluidora_potencial, "\\.", "") %>%
      as.double(),
    
    carga_poluidora_remancescente =  stringr::str_replace_all(carga_poluidora_remancescente, "\\.", "") %>%
      as.double(),
    ictem =  stringr::str_replace_all(ictem, ",", "\\.") %>% as.double()
    
  )

Agora podemos observar novamente o tipo de dados nas colunas, e verificar se todos os dados estão no formato ideal para a análise:

tibble::glimpse(apendice_c)
## Rows: 645
## Columns: 11
## $ ugrhi                         <chr> "1", "1", "1", "2", "2", "2", "2", "2...
## $ municipio                     <chr> "Campos do Jordão", "Santo Antônio do...
## $ consessao                     <chr> "SABESP", "SABESP", "SABESP", "SAAE",...
## $ pop_urbana                    <dbl> 51440, 4033, 5224, 35604, 1863, 2598,...
## $ atendimento_coleta_porc       <dbl> 52, 47, 92, 70, 91, 100, 89, 100, 100...
## $ atendimento_tratamento_porc   <dbl> 100, 100, 75, 28, 100, 0, 100, 99, 10...
## $ eficiencia                    <dbl> 97, 80, 76, 70, 82, NA, 62, 75, 86, 8...
## $ carga_poluidora_potencial     <dbl> 2778, 218, 282, 1923, 101, 140, 470, ...
## $ carga_poluidora_remancescente <dbl> 1377, 136, 133, 1659, 26, 140, 210, 1...
## $ ictem                         <dbl> 6.06, 4.65, 6.14, 2.56, 8.22, 1.50, 6...
## $ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Guaçu e af...

Agora a base está pronta para uso!

Dados shapefile dos município

Os dados foram obtidos com o pacote geobr:

# Lê a base de dados espaciais (do tipo Shapefile) dos municípios do Estado de São Paulo,
# no ano de 2018, segundo o IBGE.
# Os dados salvos são da classe Simple Feature

municipios_sp <- geobr::read_municipality("SP", 2018)

Lista de UGRHIS

No projeto, defini como área de estudo os municípios das seguintes Unidades de Gerenciamento de Recursos Hídricos (UGRHI): Paraíba do Sul, Litoral Norte, Piracicaba/Capivari/Jundiaí, Alto Tietê, Baixada Santista e Tietê/Sorocaba. Essas UGRHIs foram escolhidas por estarem totalmente ou marjoritariamente no território da Macrometrópole Paulista (MMP) (considerando a delimitação do DAEE4).

Criei manualmente uma tibble com o número e nome das UGRHIs que farão parte da análise:

ugrhis <- tibble::tibble(
  ugrhi = c("2",
            "3",
            "5",
            "6",
            "7",
            "10"),
  nome_ugrhi = c(
    " Paraíba do Sul",
    " Litoral Norte",
    " Piracicaba/Capivari/Jundiaí",
    " Alto Tietê",
    " Baixada Santista",
    " Tietê/Sorocaba"
  )
)

Unir as bases !

A base da CETESB não possui o código de município do IBGE (o ideal para fazer o Join). Neste caso, podemos usar o nome do município, porém é preciso padronizar os nomes em relação à maiúsculas/minúsculas, acentos, presença de traços, entre outros. A maior diferença encontrada foi na grafia do nome do município “São Luiz do Paraitinga”: segundo o site da Assembléia Legislativa do Estado de São Paulo, e o site do município, Luiz é escrito com Z, porém a base da CETESB utiliza a forma incorreta: “São Luís do Paraitinga”. Essas inconsistências foram corrigidas com código abaixo, usando principalmente funções dos pacotes stringr, dplyr e abjutils:

municipios_sp_limpo <-
  municipios_sp %>% dplyr::mutate(
    nome_muni = stringr::str_to_lower(name_muni),
    nome_muni = stringr::str_replace_all(nome_muni, "-", " "),
    nome_muni = abjutils::rm_accent(nome_muni)
  )

apendice_c_limpo <- apendice_c %>% dplyr::mutate(
  nome_muni =  dplyr::case_when(
    municipio == "São Luís do Paraitinga" ~
      "São Luiz do Paraitinga",
    TRUE ~ municipio
  ),
  nome_muni = stringr::str_to_lower(nome_muni),
  nome_muni = stringr::str_replace_all(nome_muni, "-", " "),
  nome_muni = abjutils::rm_accent(nome_muni))
  • Após arrumar a base, podemos unir com as funções do tipo join_*, do pacote dplyr (Sim, é possível usar as funções do tipo join_* com objetos de classe Simple Feature, porém use-os como o primeiro argumento ao usar a função):
apendice_c_geo <-
  dplyr::full_join(municipios_sp_limpo, apendice_c_limpo) %>%
  dplyr::left_join(ugrhis)

apendice_c_geo %>% nrow() # Confirmando se a nova base tem o número de municípios do estado.
## [1] 645

Ao unir as bases, temos colunas duplicadas ou desnecessárias, então é interessante removê-las. Após este procedimento, a base será filtrada para que apenas municípios que fazem parte das UGRHIs analisadas estejam na tibble gerada.

Além disso, o valor de porcentagem de atendimento de tratamento de esgoto é um valor de porcentagem em relação ao volume de esgoto coletado. Por exemplo, o município de Bertioga, segundo os dados da CETESB para 2018, apresenta uma porcentagem de coleta de apenas 34 % do esgoto gerado, e uma porcentagem de 100 % do esgoto tratado. Isso significa que 100 % do esgoto coletado é tratado, e não mostra a porcentagem de todo esgoto gerado que foi tratado. Para isso, criei também uma coluna (chamada porc_real_trat) onde é feito esse cálculo (utilizando a função mutate).

saneamento <- apendice_c_geo %>%
  dplyr::select(-nome_muni,-municipio,-code_state) %>% # Remove colunas duplicadas
  dplyr::filter(ugrhi %in% ugrhis$ugrhi) %>% # Filtra a coluna UGRHI. Apenas as UGRHIS que estão na tibble
                                            # criada, permanecerão.
  dplyr::mutate(porc_real_trat = atendimento_tratamento_porc * atendimento_coleta_porc / 100) # Cria uma nova
# coluna, com o cálculo do número real de porcentagem de tratamento de esgoto.

A base final que usaremos na análise contém dados de 171 municípios, que fazem parte de 6 UGRHIs diferentes. A soma da população urbana destes municípios é de 32.79 milhões de habitantes, o que corresponde à 75.1 % da população urbana do Estado de São Paulo (segundo os dados da base completa utilizada nessa análise).

Visualizando os dados

Para evitar duplicação de código, o código abaixo é referente ao estilo do mapa, que aplicarei em todos os mapas seguintes.

tema_mapa <-
  theme_bw() + # Escolhe o tema. Eu gosto do theme_bw() por ser bem simples/limpo
  
  # Os códigos abaixo são referentes à estética do tema,
  # como o tamanho da fonte, direção do texto,
  # linhas ao fundo, etc.
  
  theme(
    axis.text.y = element_text(
      angle = 90,
      hjust = 0.5,
      size = 8
    ),
    axis.text.x = element_text(size = 8),
    axis.title.y = element_text(size = rel(0.8)),
    axis.title.x = element_text(size = rel(0.8)),
    panel.grid.major = element_line(
      color = gray(0.9),
      linetype = "dashed",
      size = 0.1
    ),
    panel.background = element_rect(fill = "white") +
      annotation_scale(location = "br", width_hint = 0.30)
  )

Com a função geom_sf(), é possível criar mapas utilizando o pacote ggplot2 e objetos de classe Simple Feature (sf). Assim podemos usar as nossas habilidades de criar gráficos lindos no ggplot2, e criar mapas também usando as funções que já conhecemos.

class(saneamento) # Função class() apresenta a classe do objeto. 
## [1] "sf"         "data.frame"

O mapa abaixo apresenta os municípios que fazem parte da análise, segundo a UGRHI, e a localização destes municípios no Estado de São Paulo. Podemos usar mais de uma camada geom_sf() no mesmo mapa, da mesma forma que fazemos com o ggplot2:

saneamento %>% # Base de dados usada
  ggplot() + # Inicia o gráfico ggplot
  geom_sf(data = apendice_c_geo,
          # Camada do mapa da base completa (Estado SP)
          alpha = .9,
          color = NA) +
  geom_sf(aes(fill = nome_ugrhi)) + # Camada do mapa da base saneamento
  # Adiciona Título e Legendas
  labs(fill = "UGRHI",
       title = "Municípios que fazem parte da análise, segundo a UGRHI") +
  # Adiciona o Norte Geográfico
  annotation_north_arrow(
    location = "br",
    which_north = "true",
    height = unit(1, "cm"),
    width = unit(1, "cm"),
    pad_x = unit(0.1, "in"),
    pad_y = unit(0.1, "in"),
    style = north_arrow_fancy_orienteering
  ) +
  ggspatial::annotation_scale() +
  # Adiciona o tema criado anteriormente
  tema_mapa 

O mapa abaixo apresenta a porcentagem de atendimento de coleta de esgoto, por município:

saneamento %>%
  ggplot() +
  geom_sf(aes(fill = atendimento_coleta_porc)) +
  scale_fill_viridis_c(direction = -1, limits = c(0, 100)) + # Escala de cores
  labs(fill = "Porcentagem de \natendimento de \ncoleta de esgoto",
       title = "Porcentagem de atendimento de coleta de esgoto, por município",
       subtitle = "Dados da CETESB, para o ano de 2018.") +
  annotation_north_arrow(
    location = "br",
    which_north = "true",
    height = unit(1, "cm"),
    width = unit(1, "cm"),
    pad_x = unit(0.1, "in"),
    pad_y = unit(0.1, "in"),
    style = north_arrow_fancy_orienteering
  ) +
  ggspatial::annotation_scale() +
  tema_mapa 

O mapa abaixo apresenta a porcentagem de atendimento de tratamento de esgoto, considerando o total de esgoto coletado, por município:

saneamento %>%
  ggplot() +
  geom_sf(aes(fill = porc_real_trat)) +
  scale_fill_viridis_c(direction = -1, limits = c(0, 100)) +
  labs(fill = "% de \natendimento de \ntratamento de esgoto ",
       title = "Porcentagem de atendimento de tratamento de esgoto, por município",
       subtitle = "Calculado a partir de dados da CETESB, para o ano de 2018.") +
  annotation_north_arrow(
    location = "br",
    which_north = "true",
    height = unit(1, "cm"),
    width = unit(1, "cm"),
    pad_x = unit(0.1, "in"),
    pad_y = unit(0.1, "in"),
    style = north_arrow_fancy_orienteering
  ) +
  ggspatial::annotation_scale() +
  tema_mapa 

Conclusão do post

Neste post, mostrei um caminho reprodutível e realizado utilizando o R:

  • Com o pacote pdftables, é possível converter tabelas que estão em arquivos PDF para arquivos CSV.

  • Com o pacote geobr, é possível obter os arquivos shapefile para os mapas.

  • Com as funções dos pacotes que fazem parte do tidyverse, diversas etapas da análise de dados são possíveis: ler os dados no R, limpeza de dados, manipulação dos dados, cruzamento de bases de dados, visualização, e outros.

Recomendações para a base da CETESB

  • Adicionar uma explicação sobre cada coluna da base disponibilizada.

  • Seria melhor disponibilizar também o arquivo .CSV. Não disponibilizar PDFs digitalizados (Ex: relatório do ano de 2016).

  • Seria útil adicionar, para os próximos relatórios, a coluna de código IBGE do município. Isso facilitaria o cruzamento com outras bases de dados.

  • Verificar a grafia do nome dos municípios (está inconsistente com a lista de municípios da Assembléia Legislativa do Estado de São Paulo5): São Luiz do Paraitinga, Biritiba Mirim, Itaoca.

Informações sobre a sessão do R e RStudio

  • As informações abaixo são interessantes para registrar a versão do R utilizada, versões de pacotes, entre outros.
sessioninfo::session_info()
## - Session info ---------------------------------------------------------------
##  setting  value                       
##  version  R version 3.6.2 (2019-12-12)
##  os       Windows 10 x64              
##  system   x86_64, mingw32             
##  ui       RTerm                       
##  language (EN)                        
##  collate  Portuguese_Brazil.1252      
##  ctype    Portuguese_Brazil.1252      
##  tz       America/Sao_Paulo           
##  date     2020-07-29                  
## 
## - Packages -------------------------------------------------------------------
##  package     * version date       lib source                         
##  abjutils    * 0.2.4   2020-06-26 [1] Github (abjur/abjutils@cc3ec0c)
##  assertthat    0.2.1   2019-03-21 [1] CRAN (R 3.6.2)                 
##  backports     1.1.8   2020-06-17 [1] CRAN (R 3.6.2)                 
##  blob          1.2.1   2020-01-20 [1] CRAN (R 3.6.3)                 
##  blogdown      0.20    2020-06-23 [1] CRAN (R 3.6.3)                 
##  bookdown      0.20    2020-06-23 [1] CRAN (R 3.6.3)                 
##  broom         0.5.6   2020-04-20 [1] CRAN (R 3.6.3)                 
##  cellranger    1.1.0   2016-07-27 [1] CRAN (R 3.6.2)                 
##  class         7.3-15  2019-01-01 [2] CRAN (R 3.6.2)                 
##  classInt      0.4-3   2020-04-07 [1] CRAN (R 3.6.2)                 
##  cli           2.0.2   2020-02-28 [1] CRAN (R 3.6.3)                 
##  colorspace    1.4-1   2019-03-18 [1] CRAN (R 3.6.1)                 
##  crayon        1.3.4   2017-09-16 [1] CRAN (R 3.6.2)                 
##  curl          4.3     2019-12-02 [1] CRAN (R 3.6.2)                 
##  DBI           1.1.0   2019-12-15 [1] CRAN (R 3.6.2)                 
##  dbplyr        1.4.4   2020-05-27 [1] CRAN (R 3.6.3)                 
##  digest        0.6.25  2020-02-23 [1] CRAN (R 3.6.2)                 
##  dplyr       * 1.0.0   2020-05-29 [1] CRAN (R 3.6.3)                 
##  e1071         1.7-3   2019-11-26 [1] CRAN (R 3.6.2)                 
##  ellipsis      0.3.1   2020-05-15 [1] CRAN (R 3.6.3)                 
##  evaluate      0.14    2019-05-28 [1] CRAN (R 3.6.2)                 
##  fansi         0.4.1   2020-01-08 [1] CRAN (R 3.6.2)                 
##  farver        2.0.3   2020-01-16 [1] CRAN (R 3.6.2)                 
##  forcats     * 0.5.0   2020-03-01 [1] CRAN (R 3.6.3)                 
##  fs            1.4.2   2020-06-30 [1] CRAN (R 3.6.2)                 
##  generics      0.0.2   2018-11-29 [1] CRAN (R 3.6.2)                 
##  geobr       * 1.3     2020-03-29 [1] CRAN (R 3.6.3)                 
##  ggplot2     * 3.3.2   2020-06-19 [1] CRAN (R 3.6.2)                 
##  ggspatial   * 1.1.3   2020-06-09 [1] CRAN (R 3.6.3)                 
##  glue          1.4.1   2020-05-13 [1] CRAN (R 3.6.3)                 
##  gtable        0.3.0   2019-03-25 [1] CRAN (R 3.6.2)                 
##  haven         2.3.1   2020-06-01 [1] CRAN (R 3.6.3)                 
##  hms           0.5.3   2020-01-08 [1] CRAN (R 3.6.2)                 
##  htmltools     0.5.0   2020-06-16 [1] CRAN (R 3.6.3)                 
##  httr          1.4.1   2019-08-05 [1] CRAN (R 3.6.2)                 
##  jsonlite      1.7.0   2020-06-25 [1] CRAN (R 3.6.3)                 
##  KernSmooth    2.23-16 2019-10-15 [2] CRAN (R 3.6.2)                 
##  knitr       * 1.29    2020-06-23 [1] CRAN (R 3.6.3)                 
##  labeling      0.3     2014-08-23 [1] CRAN (R 3.6.0)                 
##  lattice       0.20-38 2018-11-04 [2] CRAN (R 3.6.2)                 
##  lifecycle     0.2.0   2020-03-06 [1] CRAN (R 3.6.3)                 
##  lubridate     1.7.9   2020-06-08 [1] CRAN (R 3.6.2)                 
##  magrittr    * 1.5     2014-11-22 [1] CRAN (R 3.6.2)                 
##  modelr        0.1.8   2020-05-19 [1] CRAN (R 3.6.3)                 
##  munsell       0.5.0   2018-06-12 [1] CRAN (R 3.6.2)                 
##  nlme          3.1-142 2019-11-07 [2] CRAN (R 3.6.2)                 
##  pdftables   * 0.1     2016-02-15 [1] CRAN (R 3.6.3)                 
##  pillar        1.4.4   2020-05-05 [1] CRAN (R 3.6.3)                 
##  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 3.6.2)                 
##  purrr       * 0.3.4   2020-04-17 [1] CRAN (R 3.6.3)                 
##  R6            2.4.1   2019-11-12 [1] CRAN (R 3.6.2)                 
##  Rcpp          1.0.4.6 2020-04-09 [1] CRAN (R 3.6.3)                 
##  readr       * 1.3.1   2018-12-21 [1] CRAN (R 3.6.2)                 
##  readxl        1.3.1   2019-03-13 [1] CRAN (R 3.6.3)                 
##  reprex        0.3.0   2019-05-16 [1] CRAN (R 3.6.2)                 
##  rlang         0.4.6   2020-05-02 [1] CRAN (R 3.6.3)                 
##  rmarkdown     2.3     2020-06-18 [1] CRAN (R 3.6.3)                 
##  rstudioapi    0.11    2020-02-07 [1] CRAN (R 3.6.2)                 
##  rvest         0.3.5   2019-11-08 [1] CRAN (R 3.6.2)                 
##  scales        1.1.1   2020-05-11 [1] CRAN (R 3.6.3)                 
##  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.6.2)                 
##  sf          * 0.9-4   2020-06-13 [1] CRAN (R 3.6.3)                 
##  stringi       1.4.6   2020-02-17 [1] CRAN (R 3.6.2)                 
##  stringr     * 1.4.0   2019-02-10 [1] CRAN (R 3.6.2)                 
##  tibble      * 3.0.1   2020-04-20 [1] CRAN (R 3.6.2)                 
##  tidyr       * 1.1.0   2020-05-20 [1] CRAN (R 3.6.3)                 
##  tidyselect    1.1.0   2020-05-11 [1] CRAN (R 3.6.3)                 
##  tidyverse   * 1.3.0   2019-11-21 [1] CRAN (R 3.6.3)                 
##  units         0.6-7   2020-06-13 [1] CRAN (R 3.6.3)                 
##  utf8          1.1.4   2018-05-24 [1] CRAN (R 3.6.2)                 
##  vctrs         0.3.1   2020-06-05 [1] CRAN (R 3.6.3)                 
##  viridisLite   0.3.0   2018-02-01 [1] CRAN (R 3.6.2)                 
##  withr         2.2.0   2020-04-20 [1] CRAN (R 3.6.3)                 
##  xfun          0.15    2020-06-21 [1] CRAN (R 3.6.3)                 
##  xml2          1.3.2   2020-04-23 [1] CRAN (R 3.6.3)                 
##  yaml          2.2.1   2020-02-01 [1] CRAN (R 3.6.2)                 
## 
## [1] C:/Users/beatr/Documents/R/win-library/3.6
## [2] C:/Program Files/R/R-3.6.2/library

O projeto foi realizado com R (R Core Team 2019), e os pacotes: {abjutils} (ABJ 2019), {dplyr} (Wickham, François, et al. 2020), {geobr} (Pereira and Goncalves 2020), {ggplot2} (Wickham, Chang, et al. 2020; Wickham 2016), {ggspatial} (Dunnington 2020), {knitr} (Xie 2020, 2015), {magrittr} (Bache and Wickham 2014), {pdftables} (Persson 2016), {readr} (Wickham, Hester, and Francois 2018), {rmarkdown} (Allaire et al. 2020; Xie, Allaire, and Grolemund 2018), {sf} (Pebesma 2020, 2018), {stringr} (Wickham 2019), {tibble} (Müller and Wickham 2020).

Muito obrigada!

Referências

ABJ. 2019. Abjutils: Useful Tools for Jurimetrical Analysis Used by the Brazilian Jurimetrics Association. https://github.com/abjur/abjutils.

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2020. Rmarkdown: Dynamic Documents for R. https://CRAN.R-project.org/package=rmarkdown.

Bache, Stefan Milton, and Hadley Wickham. 2014. Magrittr: A Forward-Pipe Operator for R. https://CRAN.R-project.org/package=magrittr.

Dunnington, Dewey. 2020. Ggspatial: Spatial Data Framework for Ggplot2. https://CRAN.R-project.org/package=ggspatial.

Müller, Kirill, and Hadley Wickham. 2020. Tibble: Simple Data Frames. https://CRAN.R-project.org/package=tibble.

Pebesma, Edzer. 2018. “Simple Features for R: Standardized Support for Spatial Vector Data.” The R Journal 10 (1): 439–46. https://doi.org/10.32614/RJ-2018-009.

———. 2020. Sf: Simple Features for R. https://CRAN.R-project.org/package=sf.

Pereira, Rafael H. M., and Caio Nogueira Goncalves. 2020. Geobr: Loads Shapefiles of Official Spatial Data Sets of Brazil. https://CRAN.R-project.org/package=geobr.

Persson, Eric. 2016. Pdftables: Programmatic Conversion of Pdf Tables. https://CRAN.R-project.org/package=pdftables.

R Core Team. 2019. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.

Wickham, Hadley. 2016. Ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York. https://ggplot2.tidyverse.org.

———. 2019. Stringr: Simple, Consistent Wrappers for Common String Operations. https://CRAN.R-project.org/package=stringr.

Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.

Wickham, Hadley, Winston Chang, Lionel Henry, Thomas Lin Pedersen, Kohske Takahashi, Claus Wilke, Kara Woo, Hiroaki Yutani, and Dewey Dunnington. 2020. Ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. https://CRAN.R-project.org/package=ggplot2.

Wickham, Hadley, Romain François, Lionel Henry, and Kirill Müller. 2020. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.

Wickham, Hadley, Jim Hester, and Romain Francois. 2018. Readr: Read Rectangular Text Data. https://CRAN.R-project.org/package=readr.

Xie, Yihui. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.

———. 2020. Knitr: A General-Purpose Package for Dynamic Report Generation in R. https://CRAN.R-project.org/package=knitr.

Xie, Yihui, J. J. Allaire, and Garrett Grolemund. 2018. R Markdown: The Definitive Guide. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown.