Skip to content

Instantly share code, notes, and snippets.

@beatrizmilz
Created October 17, 2022 19:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beatrizmilz/c29c779ed5d50632ab1a5b750552c2de to your computer and use it in GitHub Desktop.
Save beatrizmilz/c29c779ed5d50632ab1a5b750552c2de to your computer and use it in GitHub Desktop.
Respondendo a dúvida :
# 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