IA aplicada à visualização de dados

Kit de ferramentas, régua de codificação e casos que cabem no TG e no lab. Aula para a TRA-46 (Economia Aplicada) na Divisão de Engenharia Civil do ITA. A apresentação roda aqui; dá para abrir em tela cheia, baixar em PDF ou exportar em PowerPoint. As skills da aula estão em /skills/.

Apresentação da aula

30 slides · cerca de 30 minutos · setas para navegar · deslize para navegar
Apresentar

Slide de 16:9 embutido em tela de celular fica ilegível. Abra a apresentação em tela cheia (e gire o aparelho).

Abrir a apresentação

O argumento

Durante toda a graduação, o gargalo de qualquer análise foi o mesmo: achar o dado, limpar, padronizar unidade e ano-base, e só então plotar. As pesquisas de mercado da época davam o tamanho do problema (79% do tempo do analista em coleta e limpeza na pesquisa da CrowdFlower em 2016, 45% na da Anaconda em 2020). O gráfico era o que sobrava do dia.

Isso tinha um efeito caro: quando um gráfico custa quatro horas, você faz um só. E esse único gráfico quase sempre serve para confirmar o que você já achava, porque ninguém trabalha quatro horas para descobrir que estava errado.

A IA derrubou o custo de produzir um artefato visual de horas para minutos. Em economia aplicada, quando um insumo barateia, a resposta racional é fazer muito mais e descartar quase tudo. A parte que continua trabalhosa é ter boa referência: achar a fonte primária, saber contra o que comparar e ter o que dizer com aquilo.

O kit mudou. Como aluno, entre 2017 e 2021, era Excel, MATLAB, tabela copiada de PDF e Word no pen drive. Hoje: Claude lendo o PDF, NotebookLM (Gemini) juntando as fontes num caderno, Cursor no código, Python no SVG, Observable para prototipar, GitHub publicando, MapLibre desenhando o mapa sobre a base do OpenStreetMap e APIs abertas trazendo o dado público direto da fonte. O site em si sobe de graça: Jekyll (ou Next.js) na Vercel, DNS na Cloudflare. Com esse kit cabem dez tentativas numa tarde.

Os nove casos

Cada caso é uma decisão de engenharia em que o formato do gráfico muda a resposta, não só a aparência dela. Os cinco primeiros são dado parado, publicado e conferido. Os quatro últimos buscam o dado na hora em que a página abre.

  1. Estouro de custo em obra de transporte. Ferrovia estoura 45% em média (desvio padrão 38), pontes e túneis 34% (desvio 62) e rodovia 20% (desvio 30), em 258 projetos de 20 países. Em ponte e túnel o desvio é quase o dobro da média: uma contingência de 34% cobre o caso médio, e poucos projetos ficam perto do caso médio. Em vez de um número, o que ajuda a decidir é a distribuição de referência dos projetos comparáveis.
  2. Tarifa e demanda aérea. A elasticidade-preço publicada é uma faixa, não um ponto: de -0,84 a -1,96 no nível de rota e de -0,48 a -1,23 no nível nacional. Desenhar a faixa como faixa mostra que a decisão inverte de sinal conforme o nível de agregação. Uma linha única esconderia isso.
  3. Curva de deterioração de pavimento. Nos primeiros 75% da vida a condição cai cerca de 40%. Os 40% seguintes caem em mais 17% da vida. Passar 2 a 3 anos do ponto ótimo multiplica por 4 a 5 o custo de restaurar. Quem vê a tabela discute preço unitário, quem vê a curva discute em que ano intervir.
  4. Fila em terminal. No diagrama cumulativo, a distância horizontal entre chegadas e atendimentos é a espera de um passageiro, a vertical é o tamanho da fila e a área entre as curvas é o atraso total. Com números redondos de aula: 120 passageiros chegando a 6 por minuto num posto que atende 4 por minuto dão fila máxima de 40 pessoas no minuto 20, espera máxima de 10 minutos e 600 passageiro-minuto de atraso total. Um desenho responde três perguntas sem dizer um número, porque a codificação foi escolhida antes de desenhar.
  5. Dez anos das duas aéreas listadas na B3. A GOLL4 sai de R$ 1,53 em janeiro de 2016, chega a R$ 40,97 em julho de 2019 e termina a R$ 0,79 em 11 de junho de 2025. A AZUL4 estreia a R$ 23,96 em abril de 2017, chega a R$ 59,26 em janeiro de 2020 e termina a R$ 0,81 em 22 de dezembro de 2025. Quedas de 98,1% e 98,6% sobre o pico, enquanto o Ibovespa multiplicou por 4,4 no mesmo período. O gráfico está detalhado mais abaixo, junto com a armadilha do fator de cotação.
  6. Tráfego aéreo sobre o Brasil, agora. Três APIs abertas, amostra no passo de 45 segundos, cada coordenada testada contra os polígonos dos 27 estados antes de entrar na conta. Posição real para posição no plano, rumo para ângulo, altitude e velocidade só ao apontar.
  7. São José dos Campos em 2D e em 3D. Recorte de 1,44 grau de latitude por 1,70 de longitude em volta de SBSJ, cerca de 160 por 174 quilômetros, com altitude no eixo Z e rota em ortodromia. Mesma fonte do mapa do Brasil, na escala de um aeroporto.
  8. 264 Super Tucanos no pátio. Aeronaves Super Tucano produzidas pela Embraer. O total publicado é 264 até 2023; a animação preenche o pátio ano a ano com ritmo aproximado da lista de produção EMB-314, reescalada para fechar nesse total. A barra diria só o número; aqui o número ocupa chão.

Dez anos das aéreas na bolsa, e a armadilha do arquivo da B3

O quinto caso é o que mais se parece com um TG de economia aplicada: série longa, fonte primária, choques datados por cima. As duas companhias aéreas que negociaram ação na B3 na última década foram a GOL e a Azul, e as duas terminaram o período valendo menos de um real por papel.

A GOLL4 abre janeiro de 2016 a R$ 1,53, no fundo da recessão, chega a R$ 40,97 em julho de 2019 e fecha a R$ 0,79 em 11 de junho de 2025, queda de 98,1% sobre o pico. A AZUL4 estreia em abril de 2017 a R$ 23,96, chega a R$ 59,26 em janeiro de 2020, dois meses antes da pandemia, e fecha a R$ 0,81 em 22 de dezembro de 2025, queda de 98,6%. No mesmo período o Ibovespa saiu de 40.406 para 177.895 pontos, um múltiplo de 4,4. É o tipo de comparação que só funciona com referência do lado: sem o índice, a queda das duas parece uma história de bolsa, e com o índice fica claro que é uma história de setor.

Por que faixa em uns eventos e linha em outros

A escolha vale para qualquer série com contexto histórico em cima. Faixa é período com início e fim publicados: a recessão datada pelo CODACE (do segundo trimestre de 2014 ao quarto de 2016), a Selic parada em 13,75% (de 4 de agosto de 2022 a 2 de agosto de 2023, pela série 432 do Banco Central), e os dois Chapter 11, cada um do pedido até a saída (GOL de 25 de janeiro de 2024 a 6 de junho de 2025, Azul de 28 de maio de 2025 a 25 de fevereiro de 2026). Linha tracejada é data única, quando a fonte deu o dia e não o intervalo: o impeachment em 31 de agosto de 2016, a greve dos caminhoneiros começando em 21 de maio de 2018 (com aeroporto sem combustível e voo cancelado), a pandemia declarada pela OMS em 11 de março de 2020 e a invasão da Ucrânia em 24 de fevereiro de 2022. Desenhar como faixa um período cujo fim ninguém publicou seria inventar a data do fim.

A armadilha do fator de cotação

O arquivo da B3 traz um campo chamado FATCOT, o fator de cotação, que diz quantas ações o preço impresso representa. Nas duas séries longas ele vale 1, e por isso elas podem ser lidas direto. Nos papéis que nasceram das reestruturações ele muda: a GOLL54 passa a ser cotada por lote de mil ações e a AZUL53 por lote de um milhão.

O efeito prático é grande. O último pregão da GOLL4 fecha a R$ 0,79 em 11 de junho de 2025 e o primeiro da GOLL54 fecha a R$ 200,01 no dia seguinte. Emendar as duas pontas produz alta de 25.218%. Dividindo pelo fator de cotação, o papel novo vale R$ 0,20 por ação, o que é queda de 75%. O maior evento da história financeira da empresa aparece com o sinal invertido em quem não leu o campo. Do lado da Azul o caminho tem quatro códigos (AZUL4, AZUL54, AZUL53 e AZUL3), com cada preferencial virando 75 ordinárias e depois um grupamento de 150.000 para 1, que é o motivo de a ação voltar a negociar acima de R$ 20 em abril de 2026 sem que ninguém tenha recuperado nada.

Por isso o gráfico para onde cada código para, em vez de emendar. O ISIN é a prova de que são títulos diferentes: a GOLL4 é BRGOLLACNPR4 e a GOLL54 é BRGOLLA01PR5; a AZUL4 é BRAZULACNPR4 e a AZUL3 é BRAZULACNOR7. A GOL negociou pela última vez na B3 em 27 de março de 2026, depois de a CVM aprovar a oferta de fechamento de capital, com a Abra em cerca de 80% do capital após o aumento de R$ 12 bilhões da reestruturação.

Como refazer a conta

O script scripts/fetch-b3-aereas.js baixa os arquivos anuais de 2016 a 2026 direto da B3, lê o layout de 245 posições fixas, guarda o fechamento do último pregão de cada mês e escreve _data/b3_aereas.yml. Ele para com erro se algum papel aparecer com fator de cotação diferente de 1 ou com mais de um ISIN, que são as duas maneiras de a série deixar de ser a mesma sem avisar. São 4.505 pregões lidos para os 219 pontos mensais do gráfico (114 da GOLL4 e 105 da AZUL4), e os fechamentos do Ibovespa foram conferidos contra os oficiais da B3 de dezembro de 2016 (60.227) e de dezembro de 2019 (115.645).

Um exemplo que roda enquanto você lê

Os cinco casos acima são gráficos de dado parado, publicado, conferido. O que ficou barato com IA vai além de desenhar mais rápido: dá para montar o caminho inteiro, da fonte até a tela, em uma tarde. O mapa abaixo é esse caminho montado. Ele pergunta a três APIs abertas quais aeronaves estão no ar sobre o Brasil neste instante, de onde cada uma saiu e para onde vai, e desenha o resultado no mesmo preto e branco do resto do site.

Carregando tráfego aéreo…

  • posição real, girada no rumo do voo
  • rota de origem a destino, pela ortodromia
  • em solo

Posição pela OpenSky Network, reserva na airplanes.live, origem e destino pelo adsbdb, contorno na malha estadual do IBGE. Atualiza sozinho a cada 45 segundos.

As decisões de codificação, uma por uma

Um mapa de voo é uma boa prova da régua de Cleveland, porque tenta puxar cinco grandezas ao mesmo tempo: posição, rumo, altitude, velocidade e rota. A régua diz que o olho só é preciso nas primeiras codificações da lista, então gastar as boas em variável decorativa é desperdício.

  • Posição no plano vai para a posição real. É a codificação mais precisa que existe e a única que a pergunta "onde está o avião" aceita. Nada mais disputa esse canal.
  • Ângulo vai para o rumo. Ângulo é ruim para ler grandeza, mas aqui o dado já é um ângulo: o triângulo aponta para onde a aeronave voa, sem tradução no meio.
  • Altitude e velocidade não entram no desenho. Seria fácil virar cor ou tamanho, e é exatamente o que a régua condena. Elas saem como número, ao apontar a aeronave: o "detalhe sob demanda" de Shneiderman, que já está na lista de fontes acima.
  • A rota é ortodromia, não reta. A linha reta entre dois aeroportos no mapa plano não é o caminho que o avião faz. Desenhar a reta seria mais simples e estaria errado.
  • A contagem bate com o desenho. A consulta pega uma caixa que invade Argentina, Colômbia e Chile, então cada coordenada é testada contra os polígonos dos 27 estados antes de entrar na conta. Número na tela e traço na tela vêm do mesmo filtro.

O que o encanamento ensina

Num artefato ao vivo o desenho é a parte fácil; o trabalho está em mantê-lo honesto. Três decisões valem mais que o resto:

  • O navegador não fala com a fonte direto. A OpenSky cobre o país inteiro em uma requisição, mas só libera acesso à própria origem, e as APIs de ADS-B da comunidade limitam a uma requisição por segundo. Uma função no servidor faz a busca uma vez e o cache de borda serve todos os visitantes, então a carga na fonte não cresce com a audiência.
  • Atualizar a cada 45 segundos é o passo da fonte. Um jato de carreira anda cerca de 6 km nesse intervalo, meio pixel neste mapa. Atualizar de dois em dois segundos gastaria trinta vezes mais requisição para mover o desenho menos que a espessura do traço.
  • Se a fonte cair, o mapa diz que caiu. Existe uma foto do tráfego guardada no repositório, e ela entra quando a API não responde, com a data e a hora na tela. Sala de aula sem wifi e exportação em PDF continuam mostrando dado real, e nunca dado antigo apresentado como se fosse de agora.

O método em cinco passos

  1. Escreva a pergunta antes de abrir o dado, e diga que decisão muda conforme a resposta.
  2. Busque na fonte primária e registre unidade, ano-base, recorte e tamanho de amostra.
  3. Escolha a codificação na mão: posição e comprimento para grandeza, cor para categoria.
  4. Gere em lote com IA. Dez variações, inclusive as que você acha que não vão funcionar.
  5. Descarte e escolha. Quanto você jogou fora mostra se houve busca de verdade.

Fontes

  • Flyvbjerg, B., Skamris Holm, M. K. e Buhl, S. L. (2004). "What Causes Cost Overrun in Transport Infrastructure Projects?", Transport Reviews 24(1), 3 a 18. Amostra de 258 projetos em 20 países, cerca de US$ 90 bilhões a preços de 1995.
  • InterVISTAS (2007). "Estimating Air Travel Demand Elasticities", relatório final preparado para a IATA.
  • Cleveland, W. S. e McGill, R. (1984). "Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods", Journal of the American Statistical Association 79(387).
  • Shneiderman, B. (1996). "The Eyes Have It: A Task by Data Type Taxonomy for Information Visualizations", IEEE Symposium on Visual Languages.
  • FHWA e AASHTO, curva clássica de deterioração da prática de gerência de pavimentos, reproduzida em Pavement Interactive e na Asphalt Magazine.
  • CrowdFlower (2016), Data Science Report, e Anaconda (2020), State of Data Science, para a repartição do tempo do analista.
  • B3, Séries Históricas (COTAHIST), arquivos anuais de 2016 a 2026, para o fechamento diário de GOLL4 e AZUL4, o fator de cotação e o ISIN de cada papel. Série do Ibovespa pelo código ^BVSP, com os fechamentos conferidos contra os oficiais da B3.
  • CODACE, Comitê de Datação de Ciclos Econômicos da FGV IBRE, para a recessão do segundo trimestre de 2014 ao quarto trimestre de 2016, e Banco Central do Brasil, série SGS 432, para a meta Selic em 13,75% entre agosto de 2022 e agosto de 2023.
  • Marcas da GOL e da Azul no gráfico, em SVG, do Wikimedia Commons. São marcas registradas das duas empresas, usadas para identificar cada série; no gráfico a cor codifica companhia, e é a cor do próprio logo.
  • Datas e termos das duas reestruturações (pedido e saída do Chapter 11, aumento de capital de R$ 12 bilhões da GOL com a Abra em cerca de 80%, conversão de cada preferencial da Azul em 75 ordinárias, grupamento de 150.000 para 1 e fechamento de capital da GOL na B3 em março de 2026) nos comunicados das empresas e na cobertura de InfoMoney, Money Times, Seu Dinheiro e ADVFN.
  • OpenSky Network (posição das aeronaves, consulta por caixa geográfica), airplanes.live (reserva por varredura de pontos) e adsbdb (origem e destino a partir do callsign), para o mapa de tráfego. Contorno do país e divisas estaduais da malha do IBGE.
  • 3Blue1Brown, canal de Grant Sanderson (3blue1brown.com), para ver conceito explicado por desenho antes da conta, e a Manim (github.com/3b1b/manim), biblioteca Python aberta que gera esses vídeos e que também está no estudo Efetividade x eficiência.
  • Bilawal Sidhu, Ex-Google Maps PM Vibe Coded Palantir In a Weekend (WorldView, APIs abertas + agentes de IA). Repositórios OpenFoundry (github.com/DioCrafts/OpenFoundry) e AEGIS (Gotham-like no GitHub).