#----------------------------------------------------------------------- # Prof. Dr. Walmes M. Zeviani # leg.ufpr.br/~walmes · github.com/walmes # walmes@ufpr.br · @walmeszeviani # Laboratory of Statistics and Geoinformation (LEG) # Department of Statistics · Federal University of Paraná # 2023-mai-02 · Curitiba/PR/Brazil #----------------------------------------------------------------------- #----------------------------------------------------------------------- # Pacotes. library(tidyverse) #----------------------------------------------------------------------- # Importação dos dados. url <- "http://leg.ufpr.br/~walmes/data/Frota-de-ve%c3%adculos-PR.csv" tb <- readr::read_csv(url, comment = "#", quote = "\"", na = "-") attr(tb, "spec") <- NULL str(tb) # Municípios. tb %>% count(Localidade) # Tipos de veículos. tb %>% count(Nome) %>% print(n = Inf) # Número de caminhões em Curitiba em 2010. tb %>% filter(Localidade == "Curitiba", Nome == "Caminhão") %>% select("2010") #----------------------------------------------------------------------- # Pivotar os dados para mudar a disposição. tb_long <- tb %>% select(Nome, Localidade, `2006`:`2018`) %>% pivot_longer(cols = `2006`:`2018`, names_to = "Ano", values_to = "Qtd") %>% rename("municipio" = "Localidade", "tipo" = "Nome", "ano" = "Ano", "qtd" = "Qtd") str(tb_long) # NOTE: variáveis que tem espaço no nome, ou o nome é numérico, ou com # caracteres especiais, tem que ser referenciadas com "proteção" usando # as crases (backticks). Exemplo: `Foz do Iguaçu`, `2010`, `_renda_`, # etc. # Frota de caminhões em Curitiba e Maringá ao longo dos anos. tb_long %>% filter(municipio %in% c("Curitiba", "Maringá"), tipo == "Caminhão") %>% pivot_wider(names_from = "municipio", values_from = "qtd") %>% mutate(perc = 100 * `Maringá`/`Curitiba`) tb_util <- tb_long %>% filter(municipio %in% c("Curitiba", "Maringá", "Londrina", "Cascavel", "Ponta Grossa", "Foz do Iguaçu")) %>% group_by(municipio, ano) %>% summarise(tot = sum(qtd), util = sum(ifelse(tipo == "Utilitário", qtd, 0)), moto = sum(ifelse(tipo == "Motocicleta", qtd, 0))) %>% mutate(perc_util = 100 * util/tot, perc_moto = 100 * moto/tot, ano = as.integer(ano)) tb_util # Obtendo o percentual de cada categoria em relação ao total. tb_long %>% filter(municipio %in% "Curitiba") %>% filter(tipo != "Veículo") %>% group_by(municipio, ano) %>% mutate(percent = 100 * qtd/sum(qtd, na.rm = TRUE)) %>% select(-qtd) %>% pivot_wider(names_from = "tipo", values_from = "percent") #----------------------------------------------------------------------- # Gráficos. ggplot(data = tb_util, mapping = aes(x = ano, y = perc_moto, color = municipio)) + geom_point() + geom_line() + labs(x = "Ano", y = "Percentual de motos", color = "Município") tb_compos <- tb_long %>% filter(municipio %in% c("Curitiba", "Maringá", "Londrina", "Cascavel"), ano == 2018, tipo != "Veículo") %>% mutate(perc = qtd/sum(qtd)) ggplot(data = tb_compos, mapping = aes(x = reorder(tipo, perc, sum), y = perc)) + facet_wrap(facets = ~municipio) + geom_col() + coord_flip() #----------------------------------------------------------------------- # Polígonos para municípios do Brasil. library(sf) # rds <- "http://leg.ufpr.br/~walmes/data/BR_Municipios_2021.rds" # download.file(rds, basename(rds)) # tb_map <- readRDS(basename(rds)) rds <- "~/Downloads/BR_Municipios_2021.rds" tb_map <- readRDS(rds) str(tb_map) # Filtra para o Paraná. tb_map_pr <- tb_map %>% filter(SIGLA == "PR") # Todos os municípios estão presentes? all(tb_map_pr$NM_MUN %in% unique(tb_long$municipio)) tb_map_pr <- tb_long %>% filter(ano == "2018", tipo == "Caminhão") %>% left_join(x = tb_map_pr, by = c("NM_MUN" = "municipio")) tb_map_pr ggplot(data = tb_map_pr) + geom_sf(mapping = aes(fill = qtd)) + scale_fill_distiller(palette = "green", direction = 1) + labs(fill = "Número de\ncaminhões") + theme_void() #-----------------------------------------------------------------------