Criando mapas com os pacotes tidyverse e geobr

By Beatriz Milz in Portugues Reprodutibilidade Mapas

27/7/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 et al. 2019) e o pacote geobr (Pereira and Goncalves 2021), criei mapas com esses dados.

Pacotes necessários

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 Pi…
## $ consessao                     <chr> "SABESP", "SABESP", "SABESP", "SAAE", "S…
## $ pop_urbana                    <chr> "51440", "4033", "5224", "35604", "1863"…
## $ atendimento_coleta_porc       <chr> "52", "47", "92", "70", "91", "100", "89…
## $ atendimento_tratamento_porc   <chr> "100", "100", "75", "28", "100", "0", "1…
## $ 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", "1…
## $ ictem                         <chr> "6,06", "4,65", "6,14", "2,56", "8,22", …
## $ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Guaçu e aflue…

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 Pi…
## $ consessao                     <chr> "SABESP", "SABESP", "SABESP", "SAAE", "S…
## $ pop_urbana                    <dbl> 51440, 4033, 5224, 35604, 1863, 2598, 86…
## $ atendimento_coleta_porc       <dbl> 52, 47, 92, 70, 91, 100, 89, 100, 100, 8…
## $ atendimento_tratamento_porc   <dbl> 100, 100, 75, 28, 100, 0, 100, 99, 100, …
## $ eficiencia                    <dbl> 97, 80, 76, 70, 82, NA, 62, 75, 86, 89, …
## $ carga_poluidora_potencial     <dbl> 2778, 218, 282, 1923, 101, 140, 470, 432…
## $ carga_poluidora_remancescente <dbl> 1377, 136, 133, 1659, 26, 140, 210, 1125…
## $ ictem                         <dbl> 6.06, 4.65, 6.14, 2.56, 8.22, 1.50, 6.92…
## $ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Guaçu e aflue…

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.3 (2020-02-29)
##  os       macOS  10.16                
##  system   x86_64, darwin15.6.0        
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Sao_Paulo           
##  date     2021-07-03                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package     * version    date       lib source                         
##  abjutils    * 0.3.1.9000 2021-07-03 [1] Github (abjur/abjutils@7e52a0d)
##  assertthat    0.2.1      2019-03-21 [1] CRAN (R 3.6.0)                 
##  blogdown      1.3        2021-04-14 [1] CRAN (R 3.6.2)                 
##  bookdown      0.22       2021-04-22 [1] CRAN (R 3.6.2)                 
##  bslib         0.2.5.1    2021-05-18 [1] CRAN (R 3.6.2)                 
##  class         7.3-15     2019-01-01 [1] CRAN (R 3.6.3)                 
##  classInt      0.4-3      2020-04-07 [1] CRAN (R 3.6.2)                 
##  cli           3.0.0      2021-06-30 [1] CRAN (R 3.6.2)                 
##  colorspace    2.0-2      2021-06-24 [1] CRAN (R 3.6.2)                 
##  crayon        1.4.1      2021-02-08 [1] CRAN (R 3.6.2)                 
##  crul          1.1.0      2021-02-15 [1] CRAN (R 3.6.2)                 
##  curl          4.3.2      2021-06-23 [1] CRAN (R 3.6.2)                 
##  data.table    1.14.0     2021-02-21 [1] CRAN (R 3.6.3)                 
##  DBI           1.1.1      2021-01-15 [1] CRAN (R 3.6.2)                 
##  digest        0.6.27     2020-10-24 [1] CRAN (R 3.6.2)                 
##  dplyr       * 1.0.7      2021-06-18 [1] CRAN (R 3.6.2)                 
##  e1071         1.7-7      2021-05-23 [1] CRAN (R 3.6.2)                 
##  ellipsis      0.3.2      2021-04-29 [1] CRAN (R 3.6.2)                 
##  evaluate      0.14       2019-05-28 [1] CRAN (R 3.6.0)                 
##  fansi         0.5.0      2021-05-25 [1] CRAN (R 3.6.2)                 
##  farver        2.1.0      2021-02-28 [1] CRAN (R 3.6.2)                 
##  generics      0.1.0      2020-10-31 [1] CRAN (R 3.6.2)                 
##  geobr       * 1.6.1      2021-04-16 [1] CRAN (R 3.6.2)                 
##  ggplot2     * 3.3.5      2021-06-25 [1] CRAN (R 3.6.2)                 
##  ggspatial   * 1.1.5      2021-01-04 [1] CRAN (R 3.6.2)                 
##  glue          1.4.2      2020-08-27 [1] CRAN (R 3.6.2)                 
##  gtable        0.3.0      2019-03-25 [1] CRAN (R 3.6.0)                 
##  highr         0.9        2021-04-16 [1] CRAN (R 3.6.2)                 
##  hms           1.1.0      2021-05-17 [1] CRAN (R 3.6.2)                 
##  htmltools     0.5.1.1    2021-01-22 [1] CRAN (R 3.6.2)                 
##  httpcode      0.3.0      2020-04-10 [1] CRAN (R 3.6.2)                 
##  httr          1.4.2      2020-07-20 [1] CRAN (R 3.6.2)                 
##  jquerylib     0.1.4      2021-04-26 [1] CRAN (R 3.6.2)                 
##  jsonlite      1.7.2      2020-12-09 [1] CRAN (R 3.6.2)                 
##  KernSmooth    2.23-16    2019-10-15 [1] CRAN (R 3.6.3)                 
##  knitr       * 1.33       2021-04-24 [1] CRAN (R 3.6.2)                 
##  labeling      0.4.2      2020-10-20 [1] CRAN (R 3.6.2)                 
##  lifecycle     1.0.0      2021-02-15 [1] CRAN (R 3.6.2)                 
##  magrittr    * 2.0.1      2020-11-17 [1] CRAN (R 3.6.2)                 
##  munsell       0.5.0      2018-06-12 [1] CRAN (R 3.6.0)                 
##  pdftables   * 0.1        2016-02-15 [1] CRAN (R 3.6.0)                 
##  pillar        1.6.1      2021-05-16 [1] CRAN (R 3.6.2)                 
##  pkgconfig     2.0.3      2019-09-22 [1] CRAN (R 3.6.0)                 
##  proxy         0.4-26     2021-06-07 [1] CRAN (R 3.6.2)                 
##  purrr         0.3.4      2020-04-17 [1] CRAN (R 3.6.2)                 
##  R6            2.5.0      2020-10-28 [1] CRAN (R 3.6.2)                 
##  Rcpp          1.0.6      2021-01-15 [1] CRAN (R 3.6.2)                 
##  readr       * 1.4.0      2020-10-05 [1] CRAN (R 3.6.2)                 
##  rlang         0.4.11     2021-04-30 [1] CRAN (R 3.6.2)                 
##  rmarkdown     2.9        2021-06-15 [1] CRAN (R 3.6.2)                 
##  rstudioapi    0.13       2020-11-12 [1] CRAN (R 3.6.2)                 
##  s2            1.0.6      2021-06-17 [1] CRAN (R 3.6.2)                 
##  sass          0.4.0      2021-05-12 [1] CRAN (R 3.6.2)                 
##  scales        1.1.1      2020-05-11 [1] CRAN (R 3.6.2)                 
##  sessioninfo   1.1.1      2018-11-05 [1] CRAN (R 3.6.0)                 
##  sf          * 1.0-1      2021-06-29 [1] CRAN (R 3.6.2)                 
##  stringi       1.6.2      2021-05-17 [1] CRAN (R 3.6.2)                 
##  stringr     * 1.4.0      2019-02-10 [1] CRAN (R 3.6.0)                 
##  tibble      * 3.1.2      2021-05-16 [1] CRAN (R 3.6.2)                 
##  tidyselect    1.1.1      2021-04-30 [1] CRAN (R 3.6.2)                 
##  triebeard     0.3.0      2016-08-04 [1] CRAN (R 3.6.0)                 
##  units         0.7-2      2021-06-08 [1] CRAN (R 3.6.2)                 
##  urltools      1.7.3      2019-04-14 [1] CRAN (R 3.6.0)                 
##  utf8          1.2.1      2021-03-12 [1] CRAN (R 3.6.2)                 
##  vctrs         0.3.8      2021-04-29 [1] CRAN (R 3.6.2)                 
##  viridisLite   0.4.0      2021-04-13 [1] CRAN (R 3.6.2)                 
##  withr         2.4.2      2021-04-18 [1] CRAN (R 3.6.2)                 
##  wk            0.4.1      2021-03-16 [1] CRAN (R 3.6.2)                 
##  xfun          0.24       2021-06-15 [1] CRAN (R 3.6.2)                 
##  yaml          2.2.1      2020-02-01 [1] CRAN (R 3.6.0)                 
## 
## [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library

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

Muito obrigada!

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

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

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

Lente, Caio, and Julio Trecenti. 2020. Abjutils: Useful Tools for Jurimetrical Analysis Used by the Brazilian Jurimetrics Association. https://github.com/abjur/abjutils.

Müller, Kirill, and Hadley Wickham. 2021. 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.

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

Pereira, Rafael H. M., and Caio Nogueira Goncalves. 2021. Geobr: Download Official Spatial Data Sets of Brazil. https://github.com/ipeaGIT/geobr.

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

R Core Team. 2020. 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. 2021. 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. 2021. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.

Wickham, Hadley, and Jim Hester. 2020. 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/.

———. 2021. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/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.


  1. https://cetesb.sp.gov.br/ ↩︎

  2. https://support.rstudio.com/hc/en-us/articles/200532197-Character-Encoding ↩︎

  3. https://www.al.sp.gov.br/documentacao/municipios-paulistas/ ↩︎

  4. Plano Diretor de Aproveitamento dos Recursos Hídricos para a Macrometrópole Paulista - http://www.daee.sp.gov.br/ ↩︎

  5. https://www.al.sp.gov.br/documentacao/municipios-paulistas/ ↩︎

Licença de uso

Estes materiais são disponibilizados com a licença Creative Commons Atribuição-CompartilhaIgual (CC BY-SA), ou seja, você pode compartilhar e adaptar este material, porém deve atribuir os créditos para as pessoas autoras, adicionando um link para o material original, e o seu material também deve ter este mesmo tipo de licença.

Saiba mais em: Creative Commons

Posted on:
27/7/2020
Length:
19 minute read, 3871 words
Categories:
Portugues Reprodutibilidade Mapas
See Also: