Created
October 17, 2022 19:48
-
-
Save beatrizmilz/c29c779ed5d50632ab1a5b750552c2de to your computer and use it in GitHub Desktop.
Respondendo a dúvida :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Duvida aluna Liliane (Curso-R) | |
# Obti os dados aqui! | |
# https://dadosabertos.tse.jus.br/dataset/candidatos-2022 | |
# https://cdn.tse.jus.br/estatistica/sead/odsele/consulta_cand/consulta_cand_2022.zip | |
# IMPORTANDO OS DADOS! | |
pasta <- "Downloads/consulta_cand_2022/" | |
candidatos_2022_raw <- fs::dir_ls(pasta, glob = "*.csv") |> | |
purrr::map( ~ readr::read_csv2( | |
file = .x, | |
locale = readr::locale(encoding = "ISO-8859-1") | |
)) | |
candidatos_2022 <- candidatos_2022_raw |> | |
dplyr::bind_rows() |> | |
janitor::clean_names() | |
# Separando apenas o que eu preciso | |
candidatos_aptos <- candidatos_2022 |> | |
dplyr::filter(ds_situacao_candidatura == "APTO") |> | |
dplyr::select(sg_partido, ds_cargo, ds_genero) | |
# aqui é a parte principal da sua dúvida: | |
# eu primeiro conto, depois agrupo, faço a porcentagem, e desagrupo.. | |
porc_candidatos <- candidatos_aptos |> | |
dplyr::count(sg_partido, ds_cargo, ds_genero) |> | |
dplyr::group_by(sg_partido, ds_cargo) |> | |
dplyr::mutate(n_porc = n / sum(n), | |
porc = scales::percent(n_porc)) |> | |
dplyr::ungroup() | |
# em vez de gerar um gráfico por vez, voce pode criar uma funcao para fazer tudo de uma vez! | |
gerar_grafico_partido <- function(dados, partido) { | |
porc_candidatos |> | |
dplyr::filter(sg_partido == partido) |> | |
ggplot2::ggplot() + | |
ggplot2::geom_col(ggplot2::aes(x = n_porc, y = ds_cargo, fill = ds_genero), | |
position = "fill") + | |
ggplot2::labs( | |
title = glue::glue("Representação de gênero {partido}"), | |
x = "Categoria dos cargos", | |
caption = "Fonte: Elaborado pela autora" | |
) + | |
ggplot2::scale_x_continuous(labels = scales::percent) + | |
ggplot2::scale_fill_brewer(palette = "Set2", direction = -1) + | |
ggplot2::theme_bw() | |
} | |
# Exemplo como usar: | |
gerar_grafico_partido(porc_candidatos, "PSOL") | |
# gerando todos de uma vez: | |
partidos <- unique(porc_candidatos$sg_partido) | |
graficos_partidos <- partidos |> | |
purrr::map( ~ gerar_grafico_partido(porc_candidatos, .x)) | |
# os graficos estao armazenados como lista | |
graficos_partidos[1] | |
graficos_partidos[10] | |
# OU - NÃO FICA BOM! MUITOS PARTIDOS. SE FOREM MENOS PARTIDOS FICA MELHOR! | |
porc_candidatos |> | |
ggplot2::ggplot() + | |
ggplot2::geom_col(ggplot2::aes(x = n_porc, y = ds_cargo, fill = ds_genero), position = "fill") + | |
ggplot2::labs( | |
title = glue::glue("Representação de gênero nos partidos"), | |
y = "Categoria dos cargos", | |
caption = "Fonte: Elaborado pela autora" | |
) + | |
ggplot2::scale_x_continuous(labels = scales::percent) + | |
ggplot2::scale_fill_brewer(palette = "Set2", direction = -1) + | |
ggplot2::theme_bw() + | |
ggplot2::facet_wrap( ~ sg_partido) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment