Como os números são calculados
- Percentual do candidato = votos nominais ÷ votos válidos.
- Votos válidos = nominais + legenda, excluídos brancos e nulos.
- Comparecimento = válidos + brancos + nulos.
- Abstenção = eleitorado apto − comparecimento.
Plugando o seu pipeline
O painel procura um arquivo dados.json na mesma pasta ao carregar. Se existir, ele
substitui a base embutida — basta o processar.py emitir o JSON a partir do DuckDB.
Estrutura: eleicoes[] → abrangencias[] → cargos[] → turnos[], cada turno com
vagas, secoes, secoesTotalizadas, aptos, comparecimento, validos, nominais, legenda,
anulados, subjudice, brancos, nulos, candidatos[], legendas[].
Campos ausentes aparecem como — em vez de quebrar a tela.
Mapa de bolhas
A visão Mapa aparece quando a abrangência tem um bloco geo com
zonas[] (e, opcionalmente, locais[]). Cada ponto leva
lat, lng e votos[cargo] = {total, cand:{numero: votos}}.
A área da bolha é proporcional ao número de votos; clicar numa zona abre os locais de votação dela.
Para preencher a camada de votos, rode no projeto do pipeline:
python coletor.py --ano 2022 --uf DF
python processar.py --ano 2022
python gerar_geo.py --ano 2022 --uf DF --cargo "Deputado Distrital" --json dados.json
Só isso já dá o mapa por zona. Para descer ao nível de seção, coloque também
votacao_secao_<ano>_<UF>.csv e
eleitorado_locais_votacao_<ano>_<UF>.csv em dados/csvs/<ano>/ —
o segundo já traz latitude e longitude, então não há geocodificação a fazer. O gerador também
recalcula o centroide real de cada zona a partir desses locais.
Fontes