Criando mapas com os pacotes tidyverse e geobr

Portugues Reprodutibilidade

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

Beatriz Milz https://beatrizmilz.com (PROCAM/IEE/USP)
2020-07-27

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

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.
  )
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", …
$ municipio                     <chr> "Campos do Jordão", "Santo Ant…
$ consessao                     <chr> "SABESP", "SABESP", "SABESP", …
$ pop_urbana                    <chr> "51440", "4033", "5224", "3560…
$ atendimento_coleta_porc       <chr> "52", "47", "92", "70", "91", …
$ atendimento_tratamento_porc   <chr> "100", "100", "75", "28", "100…
$ eficiencia                    <chr> "97", "80", "76", "70", "82", …
$ carga_poluidora_potencial     <chr> "2.778", "218", "282", "1.923"…
$ carga_poluidora_remancescente <chr> "1.377", "136", "133", "1.659"…
$ ictem                         <chr> "6,06", "4,65", "6,14", "2,56"…
$ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Gua…

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", …
$ municipio                     <chr> "Campos do Jordão", "Santo Ant…
$ consessao                     <chr> "SABESP", "SABESP", "SABESP", …
$ pop_urbana                    <dbl> 51440, 4033, 5224, 35604, 1863…
$ atendimento_coleta_porc       <dbl> 52, 47, 92, 70, 91, 100, 89, 1…
$ atendimento_tratamento_porc   <dbl> 100, 100, 75, 28, 100, 0, 100,…
$ eficiencia                    <dbl> 97, 80, 76, 70, 82, NA, 62, 75…
$ carga_poluidora_potencial     <dbl> 2778, 218, 282, 1923, 101, 140…
$ carga_poluidora_remancescente <dbl> 1377, 136, 133, 1659, 26, 140,…
$ ictem                         <dbl> 6.06, 4.65, 6.14, 2.56, 8.22, …
$ corpo_receptor                <chr> "Rio Capivari, Rio Sapucaí-Gua…

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))
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:

Recomendações para a base da CETESB

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

sessioninfo::session_info()
─ Session info ─────────────────────────────────────────────────────
 setting  value                       
 version  R version 4.0.3 (2020-10-10)
 os       macOS Big Sur 10.16         
 system   x86_64, darwin17.0          
 ui       X11                         
 language (EN)                        
 collate  pt_BR.UTF-8                 
 ctype    pt_BR.UTF-8                 
 tz       America/Sao_Paulo           
 date     2021-02-28                  

─ Packages ─────────────────────────────────────────────────────────
 package     * version    date       lib
 abjutils    * 0.3.1.9000 2021-01-29 [1]
 assertthat    0.2.1      2019-03-21 [1]
 backports     1.2.1      2020-12-09 [1]
 broom         0.7.5      2021-02-19 [1]
 bslib         0.2.4      2021-01-25 [1]
 cellranger    1.1.0      2016-07-27 [1]
 class         7.3-18     2021-01-24 [1]
 classInt      0.4-3      2020-04-07 [1]
 cli           2.3.1      2021-02-23 [1]
 colorspace    2.0-0      2020-11-11 [1]
 crayon        1.4.1      2021-02-08 [1]
 curl          4.3        2019-12-02 [1]
 DBI           1.1.1      2021-01-15 [1]
 dbplyr        2.1.0      2021-02-03 [1]
 digest        0.6.27     2020-10-24 [1]
 distill       1.2.2      2021-02-27 [1]
 downlit       0.2.1      2020-11-04 [1]
 dplyr       * 1.0.4      2021-02-02 [1]
 e1071         1.7-4      2020-10-14 [1]
 ellipsis      0.3.1      2020-05-15 [1]
 evaluate      0.14       2019-05-28 [1]
 fansi         0.4.2      2021-01-15 [1]
 farver        2.0.3      2020-01-16 [1]
 forcats     * 0.5.1      2021-01-27 [1]
 fs            1.5.0      2020-07-31 [1]
 generics      0.1.0      2020-10-31 [1]
 geobr       * 1.5-1      2021-02-06 [1]
 ggplot2     * 3.3.3      2020-12-30 [1]
 ggspatial   * 1.1.5      2021-01-04 [1]
 glue          1.4.2      2020-08-27 [1]
 gtable        0.3.0      2019-03-25 [1]
 haven         2.3.1      2020-06-01 [1]
 highr         0.8        2019-03-20 [1]
 hms           1.0.0      2021-01-13 [1]
 htmltools     0.5.1.9000 2021-02-27 [1]
 httr          1.4.2      2020-07-20 [1]
 jquerylib     0.1.3      2020-12-17 [1]
 jsonlite      1.7.2      2020-12-09 [1]
 KernSmooth    2.23-18    2020-10-29 [1]
 knitr       * 1.31       2021-01-27 [1]
 labeling      0.4.2      2020-10-20 [1]
 lifecycle     1.0.0      2021-02-15 [1]
 lubridate     1.7.10     2021-02-26 [1]
 magrittr    * 2.0.1      2020-11-17 [1]
 modelr        0.1.8      2020-05-19 [1]
 munsell       0.5.0      2018-06-12 [1]
 pdftables   * 0.1        2016-02-15 [1]
 pillar        1.5.0      2021-02-22 [1]
 pkgconfig     2.0.3      2019-09-22 [1]
 purrr       * 0.3.4      2020-04-17 [1]
 R6            2.5.0      2020-10-28 [1]
 Rcpp          1.0.6      2021-01-15 [1]
 readr       * 1.4.0      2020-10-05 [1]
 readxl        1.3.1      2019-03-13 [1]
 reprex        1.0.0      2021-01-27 [1]
 rlang         0.4.10     2020-12-30 [1]
 rmarkdown     2.7.2      2021-02-28 [1]
 rstudioapi    0.13       2020-11-12 [1]
 rvest         0.3.6      2020-07-25 [1]
 sass          0.3.1      2021-01-24 [1]
 scales        1.1.1      2020-05-11 [1]
 sessioninfo   1.1.1      2018-11-05 [1]
 sf          * 0.9-7      2021-01-06 [1]
 stringi       1.5.3      2020-09-09 [1]
 stringr     * 1.4.0      2019-02-10 [1]
 tibble      * 3.1.0      2021-02-25 [1]
 tidyr       * 1.1.2      2020-08-27 [1]
 tidyselect    1.1.0      2020-05-11 [1]
 tidyverse   * 1.3.0      2019-11-21 [1]
 units         0.6-7      2020-06-13 [1]
 utf8          1.1.4      2018-05-24 [1]
 vctrs         0.3.6      2020-12-17 [1]
 viridisLite   0.3.0      2018-02-01 [1]
 withr         2.4.1      2021-01-26 [1]
 xfun          0.21       2021-02-10 [1]
 xml2          1.3.2      2020-04-23 [1]
 yaml          2.2.1      2020-02-01 [1]
 source                            
 Github (abjur/abjutils@caa109c)   
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.1)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 Github (rstudio/distill@3c2a367)  
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.1)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 Github (rstudio/htmltools@ac43afe)
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 Github (rstudio/rmarkdown@f31844d)
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.3)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.1)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    
 CRAN (R 4.0.2)                    

[1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library

O projeto foi realizado com R (R Core Team 2020), e os pacotes: {abjutils} (Lente and Trecenti 2020), {dplyr} (Wickham et al. 2021), {geobr} (Pereira and Goncalves 2021), {ggplot2} (Wickham et al. 2020; 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.
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: Loads Shapefiles of 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. 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. 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/↩︎

References

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Milz (2020, July 27). Beatriz Milz: Criando mapas com os pacotes tidyverse e geobr. Retrieved from https://beatrizmilz.com/posts/2020-07-27-criando-mapas-com-os-pacotes-tidyverse-e-geobr/

BibTeX citation

@misc{milz2020criando,
  author = {Milz, Beatriz},
  title = {Beatriz Milz: Criando mapas com os pacotes tidyverse e geobr},
  url = {https://beatrizmilz.com/posts/2020-07-27-criando-mapas-com-os-pacotes-tidyverse-e-geobr/},
  year = {2020}
}