Pular para o conteúdo
Guia do menu Design

Gráficos e visualização de dados: o painel que cabe numa decisão

Escolha o gráfico pela decisão que ele precisa apoiar: comparar valores, acompanhar uma tendência, avaliar uma meta ou conferir números exatos. Imagine uma reunião de segunda com quarenta indicadores e nenhuma decisão; esse é o cenário didático deste guia. O catálogo reúne quarenta tipos, exemplos com dados e receitas de construção. A escolha da biblioteca vem depois da pergunta, acompanhada de critérios de acessibilidade e da origem de cada número.

A pesquisa de fontes primárias consultadas em 02/09/2026 e os guias taxonômicos de relatórios visuais e stacks de frontend orientam as comparações. As referências de contraste, desempenho e licenças foram conferidas novamente em 10/09/2026, e a revisão de 08/10/2026 acrescentou estudos de percepção, acessibilidade e leitura por IA, listados no registro de mudanças. Esta leitura complementa os guias de ícones, ilustrações, animação e geração de imagens e de diagramas de arquitetura e fluxo.

A aula, em vídeo e em podcast

O vídeo e o podcast foram gerados no NotebookLM a partir da página publicada. Os arquivos originais estão disponíveis sem recompressão, com download, compartilhamento e transcrição completa para ler e copiar. As transcrições preservam a fala das gravações; as correções técnicas abaixo atualizam pontos que mudam a decisão de implementação.

Notas para acompanhar a aula: no WebAIM Million 2026, 95,9% das páginas apresentaram falhas detectáveis de WCAG e 83,9% apresentaram texto com baixo contraste. O uPlot informa cerca de 50 kB minificados; desempenho depende dos dados e do dispositivo. O ApexCharts tem condições de licença Community, Commercial e OEM. SVG também exige alternativa textual e verificação de acessibilidade.

Errata das gravações, revisada em 08/10/2026: a fala gravada fica como está, e cinco trechos dela pedem leitura com estas correções.

  • O uPlot informa cerca de 50 kB minificados no README do projeto; a conversa cita 40 kB.
  • Para cruzar filtros num painel, a primeira tentativa deste guia é o Apache ECharts; o ApexCharts entra quando o caso pede anotação e filtro cruzado prontos sem trocar de biblioteca.
  • Canvas não pinta milhões de pontos "como se fosse nada": o custo depende do aparelho, do volume e da interação. Meça com a série real, como a oficina de séries densas propõe.
  • OKLCH distribui a claridade de forma mais uniforme, mas não garante contraste WCAG. A razão de contraste se calcula pela luminância relativa e se confere nos dois temas.
  • A expressão "pura neurociência", usada sobre small multiples, carece de fonte. A evidência citável está na seção de percepção.
Vídeo da aula: o panorama das decisões deste guia, com legenda em português.
Transcrição do vídeo

Olá, time! É muito bom ter a equipe toda reunida nesta nossa aula de hoje para o portal Lead Lovers 2026. A gente vai mergulhar fundo nos nossos padrões de visualização de dados e o foco vai ser totalmente prático e direto. A ideia é responder a uma pergunta simples. Como transformar dados técnicos em decisões reais para o negócio, sem nenhuma enrolação visual? A nossa pauta é cirúrgica. Vamos passar pelo problema das 40 métricas, entender a hierarquia da percepção, cravar as regras de bibliotecas, SVG e canvas, garantir o contraste WCAG, blindar nossos dados contra alucinações de IA e fechar com o nosso principal objetivo, o painel de uma página. E vamos direto ao ponto. Começando pelo problema das 40 métricas.

Todo mundo aqui conhece a dor operacional dessa frase. O erro clássico, aquele que acontece antes mesmo da primeira linha de código ser escrita, é não perguntar quem vai ler. Pensa bem. Um relatório de leitura para a diretoria exige metas claras e recomendações, com quase zero interação. Por outro lado, um painel de exploração que o time de mídia usa para caçar a campanha que está sangrando o orçamento precisa de filtros profundos, uma densidade altíssima. Quando se mistura esses dois contextos numa tela só, o resultado é um desastre. Fica denso demais para tomar uma decisão rápida e raso demais para investigar a causa raiz. E como a gente blinda o portal contra isso? Com a regra estrita dos dois cliques. É inegociável. Se a pessoa que bate o olho no painel não descobre e no máximo dois cliques de onde vem o número, o que ele significa tecnicamente,

quando foi atualizado e quem é o dono dele? Bom, então aquela tela ainda pertence a quem programou e não a quem decide. A instrução para o time é claríssima. Antes de escolher qualquer biblioteca, é obrigatório escrever em uma única frase qual decisão aquela interface alimenta e quem toma essa decisão. Sem isso, o pedido simplesmente volta para a fila. Passando agora para a nossa segunda sessão. A hierarquia da percepção visual. E olha, isso não é achismo de design, viu? É ciência pura, baseada nos experimentos de percepção do Cleveland e do McGill lá de 1984. O nosso cérebro lê posição e comprimento numa escala linear com uma precisão absurda. Muito mais do que quando compara ângulos ou áreas. É por isso que a barra ordenada ganha de lavada da pizza. A ordem decrescente dá a resposta de bandeja.

Já o gráfico de pizza, principalmente se passar de três fatias, é considerado aqui um antipadrão. Ele força o usuário a medir ângulos no olho, o que é literalmente a pior leitura possível na nossa hierarquia. E isso nos leva a outro duelo clássico. O bullet chart contra o famoso velocímetro. Vamos ser sinceros, o velocímetro é um desperdício enorme de tela. Ele chega a roubar um quarto de um painel executivo só para exibir um único número e de quebra esconde a comparação que realmente importa. Já o bullet chart faz exatamente o oposto. Desenhado para aposentar o velocímetro de vez, ele empilha o realizado, a meta e as faixas de variação numa barra super elegante, gastando só um décimo do espaço. O segredo é alinhar a ferramenta visual com a pergunta de negócio que está sendo feita.

Se a dúvida é o que fez nosso número cair de x para y, a gente usa o waterfall, aquela cascata maravilhosa que mostra barra a barra o que somou e subtraiu. Precisa comparar a mesma métrica em vários times para achar quem está tituando? Small multiples resolve. Agora, se a diretoria exige o valor absoluto cravado de plano contra realizado, a variance table, a tabela de variação, entra em cena. Para decisões milimétricas, a tabela é sempre cidadã de primeira classe. Indo para a sessão 3, vamos falar de tecnologia pesada, SVG, canvas e nossas bibliotecas. O nosso ecossistema opera basicamente em duas frentes, SVG e canvas. O SVG é excelente porque usa elementos nativos do DOM, é nítido, aceita tokens de cor fácil

e os leitores de tela entendem perfeitamente. Mas se a gente jogar milhares de elementos operacionais ali, o navegador chora. É aí que entra o canvas, que pinta milhões de pontos como se fosse nada, tudo num bitmap só. Mas tem uma pegadinha aí e ela custa caro. Bitmap não tem semântica. Então ao usar canvas para dados massivos, não tem negociação com a norma WCAG. O time é obrigado a programar uma camada DOM paralela com resumos e tabelas em texto para manter a acessibilidade redondinha. O que nos joga direto para a nossa régua de bibliotecas, válida a partir de setembro de 2026. A regra é rígida, uma única biblioteca por projeto. Quer usar duas? Vai precisar de justificativa técnica por escrito. Para painéis operacionais brutos, a nossa principal escolha é o Apache ECharts,

porque ele faz o swap entre SVG e canvas nativamente. Gráficos editoriais levinhos? Observable Plot. Monitoramento de telemetria massiva em tempo real? O uPlot resolve isso pesando meros 40 kilobytes. Para investigar e cruzar filtros intensos, ApexCharts. E o poderoso D3.js? Esse fica estritamente reservado para visualizações narrativas 100% sob medida, porque, convenhamos, com o D3 a gente não está montando um gráfico. Está abrindo um mini-projeto. Chegamos à sessão 4, acessibilidade e contraste WCAG. Prestem muita atenção nesse número. A norma WCAG 2.2 é clara na diretriz 1.4.3. Todo texto de rótulo e toda etiqueta de eixo nos nossos gráficos

tem que bater a proporção de contraste de, no mínimo, 4,5 para 1 em relação ao fundo, sem exceções. Para os elementos gráficos, como as linhas, as barras e outras formas, a exigência alivia um pouquinho, mas continua firme, 3 para 1. E não adianta validar só na tela clarinha. A maioria das paletas que vêm de fábrica nas bibliotecas vira uma bagunça no dark mode. A auditoria de contraste tem que ser impecável nos dois temas. E como a gente garante isso sem enlouquecer? Disciplina de arquitetura. Cor por token. Todas as cores precisam vir das variáveis CSS para que o gráfico mude de tema organicamente. Se rolar um código hexadecimal chumbado no meio da configuração do gráfico, o PR vai ser reprovado na hora. E tem mais um detalhe importantíssimo. Nenhuma série de dados pode depender só da cor para ser entendida.

O uso de rótulos diretos, marcadores e traços pontilhados é obrigatório para garantir a acessibilidade de quem tem dificuldade de percepção de cores. Avançando para a sessão 5. Integridade, origens e validação IA. A gente sabe que a IA gera gráficos em segundos hoje em dia, mas o risco que vem de carona é altíssimo, as famosas alucinações. O modelo pode simplesmente fabricar um número que parece perfeito para tapar um buraco, mas que não existe na base. Isso destrói a confiança do portal. Por isso, a validação exige 3 passos de segurança. A série renderizada tem que ser idêntica à base, a especificação tem que ser declarativa, ou seja, ler da fonte sem valores chumbados, e o mais importante, o agente de IA é obrigado a apontar a linha exata de origem de cada dado. Se o número não tem origem provada, ele não sobe para a tela.

E vale repetir aquilo que a gente fala há meses. Um número órfão num painel hipermoderno desinforma muito mais do que uma planilha feia. O dado exige contexto permanente, fonte, data e para evitar confusão, o dono do indicador. Além disso, tem uma questão de arquitetura aqui. Filtros e comparações aplicadas pelo usuário precisam morar na URL da página e não escondidos no estado local da aplicação. Se alguém copiar aquele link e mandar para a diretoria no chat, a diretoria tem que abrir e enxergar rigorosamente o mesmo filtro, sem telefone sem fio. E para finalizar, seção 6, o cobiçado painel de uma página. Esse é o nosso antídoto oficial contra a reunião que não resolve nada. Essas restrições não existem para engessar o trabalho, mas para forçar foco. O limite é de 9 a 11 indicadores por painel e só. Toda a porcentagem exibida tem que vir acompanhada

do seu denominador explícito. Tudo ali precisa alimentar aquela decisão escrita em uma frase que falamos no começo. O contraste é todo validado no padrão WCAG nos dois temas e a cereja do bolo da acessibilidade. Cada gráfico ganha seu resumo em texto e a respectiva tabela. É um baita desafio técnico, com certeza, mas é um painel focado 100% em tomar a decisão. E para encerrar esta nossa aula magna de hoje, fica aqui uma provocação. Se pegarmos aquele painel gigantesco que a empresa inteira abre nas segundas-feiras, se a gente aplicar impiedosamente a nossa regra dos dois cliques, arrancar todos os gráficos de pizza e velocímetros, cobrar a taxa de contraste na vírgula e ainda exigir que a IA prove a origem de cada barra gerada, me digam, quantos desses gráficos realmente

continuariam na tela? O verdadeiro valor que a gente entrega não está em pendurar mais um indicador na interface, está em ter a coragem técnica de remover os 39 que não servem para nada. Vamos usar esse material para fazer a limpa, equipe. Bom trabalho e até a próxima.

Transcrição gerada localmente por reconhecimento de fala sobre o áudio original e revisada nos termos técnicos; pequenos desvios de grafia podem permanecer.

Podcast da aula: gráficos e visualização de dados
Portal Leadlovers 2026 · menu Design
Podcast da aula: a conversa aprofundada sobre as mesmas decisões.
Transcrição do podcast

Neste exato momento, olha, tem empresas do mundo inteiro perdendo milhões em reuniões de diretoria por causa de um único culpado. E o pior é que ninguém ousa questionar isso, né? Pois é. O culpado é simplesmente a forma geométrica de um gráfico que está lá projetado na tela. Exatamente. Bom, hoje o nosso mergulho nas fontes vai desconstruir um material fascinante que é o Guia de Gráficos e Visualização de Dados do portal Lead Lovers 2026. Eu estou super animada para a gente explorar isso. É um documento excelente. A premissa central desse guia, sabe, ela transforma completamente a maneira de a gente olhar para a inteligência de negócios, porque ele deixa muito claro que um painel com 40 indicadores simultâneos... Nossa, 40 é muita coisa?

É loucura. E se termina a reunião sem gerar nenhuma ação imediata, esse painel é, na verdade, o ativo mais inútil e caro da empresa. Com certeza. Ele até impressiona pela complexidade técnica ali na hora da apresentação, mas ele desinforma brutalmente. É muito ruído visual, sabe? Sim. E essa sobrecarga geralmente nasce antes mesmo de alguém abrir o editor de código para montar a tela. Tipo, simplesmente porque a equipe técnica pula etapa de perguntar, hum, quem é a audiência final? Isso. Falta alinhamento. Então, para mitigar isso, o guia traça uma linha muito rígida, separando o que chamam de relatório de leitura do painel de exploração. Como é que funciona essa divisão na prática? Então, a grande diferença estrutural aí está na postura de quem consome a informação.

O relatório de leitura, aquele que é projetado para a liderança na segunda-feira de manhã, ele serve unicamente para alinhar a rota estratégica. Hum, é uma coisa mais direcional. Isso, exatamente. Por causa disso, ele exige pouquíssimos gráficos. Tem que focar estritamente em meta, comparação histórica e... uma recomendação de ação clara. A interação ali beira zero. Faz sentido. A diretoria não vai ficar clicando em filtro durante a apresentação. De jeito nenhum. Agora, em contrapartida, o painel de exploração é um ambiente tático. É a trincheira, sabe? Ah, entendi. Imagina uma equipe de tráfego pago operando no dia a dia. Eles precisam encontrar cirurgicamente qual campanha específica, sei lá, em qual rede

social está drenando o orçamento da semana. O que significa que essa equipe precisa ir do dado geral para o detalhe hipergranular, o famoso drill down, né? Perfeito, o drill down. Sabe uma analogia que me veio à cabeça agora lendo o material? Misturar esses dois públicos na mesma tela seria tipo tentar ler as manchetes de um jornal impresso sobrepostas a um mapa topográfico militar super detalhado. Nossa, que imagem caótica. É, fica impossível. O jornal matinal fica totalmente legível para uma leitura rápida e o mapa militar perde aquela precisão limpa que você precisa para uma investigação em campo. Olha, é uma analogia que captura perfeitamente o desastre de usabilidade que acontece o tempo todo nas empresas.

E para resolver isso na prática, o portal implementou o que eles chamam de regra dos dois cliques. Regra dos dois cliques? Como é isso? A lógica é meio cirúrgica. Se a pessoa que está olhando para o indicador na tela precisa de mais de dois cliques no mouse para descobrir quatro âncoras fundamentais, o painel falhou. Quais âncoras? A fonte original do número, a definição matemática da métrica, a data exata da última atualização no banco de dados e o nome do responsável por aquele indicador. Caramba, fonte, definição, data e dono. Isso. Se o painel não responde isso rápido, ele continua sendo um projeto de estimação do desenvolvedor. Não é uma ferramenta útil para quem decide. Nossa, total. Porque imagina, se alguém na reunião questiona por que as vendas caíram e o

apresentador não consegue mostrar a origem do dado na hora em dois cliques. Não confio se acaba na hora. Exato, evapora. E por isso a diretriz do guia estabelece uma tela única com o máximo de 9 a 11 indicadores e os denominadores de cada métrica têm que estar ali escancarados. É, não tem como fugir. A regra da casa deles diz que antes mesmo de escolher a biblioteca de programação o time tem que escrever em uma frase qual decisão aquela tela alimenta. Sem essa declaração o pedido volta para o solicitante. Devolvido na hora. Bom, mais uma vez que essa decisão está documentada a engenharia esbarra no próximo gargalo, que é super curioso porque é um problema biológico. Sim, entramos na neurociência. O guia traz os experimentos de percepção gráfica clássicos, né?

Do William Cleveland e do Robert McGill. Foram publicados originalmente em 1984. 1984, pois é. Faz tempo, mas a biologia não muda. Esses estudos provaram que o nosso cérebro decodifica a informação visual através de uma hierarquia muito rígida. O que eu achei mais intrigante para compartilhar com quem está ouvindo é como o nervo óptico atua como um instrumento de medição mesmo, sabe? Quando a gente analisa valores olhando a posição num eixo ou o comprimento de uma barra, a margem de erro mental é quase nula. O olho traça uma linha imaginária e resolve a matemática. É automático. Agora, quando a interface reforça o olho a calcular área, tipo, o tamanho de um círculo ou saturação de cor. Ou ângulo de fatia geométrica.

Isso. Aí a precisão cognitiva simplesmente desmorona. E isso nos leva diretamente ao maior vilão corporativo de todos os tempos. Pode falar. O famigerado gráfico de pizza. Mas todo mundo ama gráfico de pizza. Por que ele é tão ruim? Olha, uma pizza com mais de três fatias obriga o seu córtex visual a medir e comparar ângulos rotacionando essas formas no espaço mental. Tipo, de forma simultânea. Fisiologicamente, isso consome muita energia. Dá um cansaço só de tentar ler um com dez fatias. É ineficiente. Por isso que as barras ordenadas vencem a pizza quase sempre. Numa barra horizontal em ordem decrescente, o olho rastreia só a ponta da linha e cria o ranking instantâneo.

Sem gastar energia mental tentando adivinhar se a fatia A é 3% maior que a fatia B. A barra ordenada tira toda a fricção, né? Outro embate maravilhoso que o material resolve é o do gráfico de velocímetro contra o bullet chart. Ah, esse é clássico. O velocímetro faz o maior sucesso em sala de comando, parece painel de carro, mas consome um quarto da tela inteira só para mostrar um ponteiro. Ele sacrifica totalmente o histórico que a gente precisa para saber se comemora ou se entra em pânico. Totalmente. E aí entra o Stephen Few. Ele criou o bullet chart justamente para resolver essa falta de densidade visual. O guia adota o bullet chart como o padrão ouro para metas. Para quem está acompanhando e não conhece, como a gente descreve o bullet chart?

Ele é tipo um comprimido de informação. Ele pega toda a complexidade do velocímetro e espreme num décimo do espaço. Ele empilha uma barra escura, que é o número realizado, e cruza uma linha marcadora pequenininha que é a meta. E o fundo tem os tons de cinza, né? Isso. O fundo indica se está na zona crítica, aceitável ou de superação. Então, num passar de olhos numa linha reta, a pessoa tem cinco camadas de contexto. Super elegante. O guia também cita diagramas de waterfall, as famosas cascatas, para explicar a dinheiro. Tipo, por que começamos o mês com 100 mil e terminamos com 80 mil? Uhum. Os bloquinhos verdes e vermelhos flutuando, mostrando quem somou e quem subtraiu o dinheiro. Ajuda demais.

E, claro, os small multiples, aquelas grades com dezenas de gráficos pequenininhos e idênticos. O cérebro vê o padrão geral rapidinho. E se tiver uma filial com a curva quebrada, ela salta aos olhos feito um alarme, sabe? Pura neurociência aplicada. E, bom, com a forma resolvida, o projeto vai para a camada de execução, o código mesmo. E aqui a gente entra na divisão técnica do guia da Lead Lovers, que é bem rigorosa entre duas tecnologias fundamentais, o SVG e o Canvas. Nossa, sim! O pedágio de cada pixel. Eu achei essa parte fascinante. Como é que o navegador interpreta essas duas opções? Olha, no SVG, que significa Scalable Vector Graphics, cada barrinha, cada linha e texto

é injetado como um elemento independente na estrutura da página, na árvore do DOM. O DOM, para quem não é da área, é meio que o esqueleto da página, né? Exato. Imagina uma coleção gigante de blocos de Lego na mesa. Como eles são independentes, você pode manipular cada bloco. Dá para mudar a cor de um bloco usando CSS ou colocar um texto extra quando o mouse passa por cima. E a questão da acessibilidade aí é forte, não é? Perfeita. Os leitores de tela conseguem tatear e ler cada bloco para o usuário com deficiência visual. Certo, mas onde o SVG falha? Porque tem um limite. Falha no peso, né? Quando um gráfico precisa carregar milhares de pontos, tipo monitoramento de sensores numa fábrica, a memória RAM no navegador colapsa tentando rastrear milhares de pecinhas de Lego ao mesmo tempo.

E aí a aba trava, o computador começa a ventilar forte... É um desastre. E é nesse cenário que o Canvas entra. O Canvas não cria bloquinhos. Ele é como uma máquina fotográfica que tira uma polaroide dos dados. Ele entrega para a interface uma única imagem plana, um bitmap. Então ele pode desenhar um milhão de pontos de uma vez só, muito rápido. Em milissegundos, sem gastar quase nada de memória. Tá, mas isso levanta uma questão. Se o Canvas é tão rápido assim e não trava nada, por que não usar o Canvas para tudo e abolir o SVG? Aí é que tá. É uma barreira ética e normativa. O pedágio de acessibilidade da WCAG. Como o Canvas gera só uma imagem chapada de pixels, o leitor de tela não enxerga nada ali. É mudo.

Ah, e não dá para selecionar texto, não dá para traduzir. Exatamente. A WCAG não abre exceção. Se o engenheiro quer usar Canvas, ele é obrigado, por regra, a construir um painel oculto paralelo no código com um resumo textual e uma tabela HTML gigante com todos os dados. Nossa, muito trabalho extra para manter. Então a régua do portal fica. Gráficos editoriais e painéis gerenciais vão sempre de SVG pela acessibilidade nativa. E telas de operação bruta com milhares de logs vão de Canvas arcando com esse pedágio da tabela paralela. Isso mesmo, dualidade mapeada. Mas a escolha da tecnologia leva ao próximo pilar, que é um perigo a longo prazo, as bibliotecas de software.

O guia de setembro de 2026 desenha um modelo bem restrito. A regra de uma biblioteca por projeto, né? Isso. Se quiser colocar uma segunda ferramenta no projeto, o arquiteto tem que justificar formalmente porque a primeira não atendeu. O objetivo é evitar o efeito Frankenstein no código. Faz todo o sentido. Senão o painel vira uma colcha de retalhos visual e de performance. E qual é o catálogo aprovado por eles? Para dor de cabeça do dia a dia, o núcleo duro deles adotou o Apache ECharts versão 6.1. A grande sacada do ECharts é que o desenvolvedor escreve o código uma vez e com um parâmetro ele decide se vai compilar em SVG ou em canvas, dependendo da carga do servidor. Uau, muito prático. E para o resto?

Para a visualização editorial, ele se recomenda o Observable Plot ou visx. E quando a densidade foge de controle mesmo, usam o uPlot. Ah, eu dia essa parte do uPlot. O guia diz que ele empurra milhões de picos no canvas e a biblioteca inteira pesa só 40 kilobytes. É muito eficiente. É minúsculo. E por fim, tem o ApexCharts na versão 7, para painéis de investigação profunda, porque ele já traz filtros cruzados e anotações nativas. Salva semanas de trabalho. Certo, mas eu tenho que levantar uma bola aqui. Lendo essa lista toda, eu senti falta de um nome gigante. E o famoso D3.js. A comunidade ama o D3, dizem que é o padrão ouro. Ah, o D3. Pois é, o guia joga meio que um balde de gelo na idolatria do D3.

O aviso lá é claro. D3 não é uma prateleira de gráficos prontos, é um kit complexo de matemática de vetores. É de muito baixo nível, né? Exato. Botar um desenvolvedor para desenhar 30 barras comparativas básicas usando o D3 é abraçar o caminho mais lento e caro possível. Adoria a analogia que o guia faz. É tipo contratar um arquiteto renomado focado em matemática paramétrica só para montar um móvel genérico da Ikea. É um baita desperdício. O D3.js só é liberado em casos raríssimos, tipo quando a narrativa visual é tão única que não existe nos catálogos prontos do ECharts ou ApexCharts. Entendido. Mas olha, mesmo escolhendo a melhor ferramenta e o melhor formato, nada disso adianta se a audiência não consegue enxergar a tela.

O capítulo de acessibilidade visual traz um dado assustador do relatório WebAIM Million. 95,9%? Das vitrines auditadas reprovaram no contraste. Como chegamos nesse nível? O diagnóstico é simples. As cores que vêm de fábrica nessas bibliotecas abertas foram feitas durante décadas para telas com fundo branco. Ah, o famoso modo claro. Isso. Aí o profissional ativa o modo escuro do sistema no fim do dia e, de repente, a legenda e os eixos simplesmente evaporam naquele fundo cinza escuro. E o time de teste quase nunca confere o gráfico no modo escuro. E a WCAG 2.2 entra como limite inegociável aqui, não é? Inegociável. Contraste de 4,5 para 1 em qualquer texto informativo ou legenda

e 3 para 1 em preenchimentos maiores, tipo a fatia de um gráfico ou uma barra mais grossa. E tem a regra de ouro que eu achei fantástica. Nunca, jamais, permitir que uma informação seja lida apenas pela diferença de cor. É a defesa comercial deles contra o daltonismo. Pois é. Imagina alguém daltônico olhando para um painel financeiro tenso, onde o lucro e a perda estão marcados só por uma bolinha verde ou uma bolinha num tom leve de vermelho sem nenhum texto de apoio. É o caos. Por isso, o guia obriga marcadores visuais cruzados. Setas, rótulos de texto direto, texturas tracejadas, intercala geometria, tipo quadrado para um dado, triângulo apontando para cima para o outro, círculo vazado.

Isso garante que a mensagem chegue. E do ponto de vista do código, o portal baniu totalmente o uso de códigos hexadecimais brutos, né? Totalmente blindado. O programador não pode mais catar um verde hexadecimal qualquer e jogar no código. Toda cor de preenchimento tem que vir de um token semântico. Tipo uma variável puxada do sistema. Isso. E o mais interessante, eles abandonaram o RGB e prescrevem o uso do modelo OKLCH para calcular esses tokens. Que é o OKLCH na prática para quem está ouvindo a gente e está acostumado só com o RGB? O RGB é meio que um sistema arcaico para somar luz no LED do monitor, mas ele não entende direito como o olho humano percebe o brilho entre cores quentes e frias.

O OKLCH simula a percepção contínua e real do nosso olho. Ah, então quando o usuário muda para o modo escuro, o OKLCH ajusta a cor respeitando matematicamente o contraste da WCAG sem a pessoa precisar ficar arremendando o código à mão. Exatamente. A matemática da cor acompanha a biologia do olho. É lindo. Lindo mesmo. Mas aí, com toda essa engenharia super protegida e pensada, a gente cai no flanco vulnerável mais explosivo de todos no desenvolvimento moderno de hoje. A inteligência artificial. Sim. E se a gente simplesmente pedir para uma IA generativa desenhar e codificar o painel em 20 segundos? Aí, a gente convida para dentro de casa o defeito mais caro de todos.

A falsificação silenciosa. As alucinações da IA com os números. Porque, assim, se a IA errar a cor ou o formato num rascunho, alguém avisa e arruma. Mas e se ela errar um indicador financeiro e ninguém notar? Esse é o perigo. Os grandes modelos de linguagem são motores matemáticos focados em previsibilidade de texto, em deixar tudo fluido. Eles não raciocinam. Então se faltar, por exemplo, o faturamento de três semanas no meio de um período longo, o que a IA faz? Ela não gosta de buracos na curva. O impulso nativo dela é fabricar dezenas de números e reais baseados em médias só para preencher aquele vetor e deixar a linha da curva suave e bonita no relatório. E se a diretoria pega um único número falso no meio do painel,

a credibilidade de um projeto de seis meses despenca na mesma hora. Perde-se tudo. Por isso, a regra de defesa número 1 do guia é muito dura. A IA desenha a forma, mas é a fonte que fornece o número puro. E como eles auditam isso sem ter que ler milhares de linhas de código, o macarrônico de interface. É a segunda regra. Eles proibiram a geração de código imperativo, tipo o JavaScript complexo. A IA só pode devolver especificações declarativas, como um arquivo JSON do Vega-Lite. Ah, entendi. Porque o JSON é um arquivo estático de texto que dá para ler com clareza. Um inspetor ou um robô consegue ler ali linha por linha e conferir se ele está puxando dado cru da tabela ou se a IA tentou embutir uma fórmula maluca para arredondar.

Exato. Fecha a porta para truques. E a terceira regra é a transparência radical. O agente LLM é intimado na programação a declarar qualquer lacuna. Se o dado de uma semana sumiu do servidor, a IA é proibida de interpolar. Ela tem que literalmente parar e deixar um buraco visível no gráfico. Deixar o buraco escancarado. Uma fratura honesta na linha visual é mil vezes mais segura que uma transição suave e inventada. Sensacional. Bom, amarrando tudo o que a gente discutiu hoje para a nossa audiência. Um bom painel, então. Precisa declarar a decisão que apoia. Precisa usar formas que o cérebro leia rápido como barras e bullets.

Esquecendo a pizza. Esqueceu a pizza. Tem que respeitar os contrastes da WCAG e o formato adequado entre SVG e canvas. E, óbvio, auditar sem dó os dados gerados pela IA no JSON. Resumo perfeito. Mas, se me permite, o material deixa uma provocação meio filosófica ali nas fronteiras do guia. Eu queria trazer isso pra fechar o pensamento. Opa! Adoro! Manda! Imagina que você montou o gráfico perfeito. Lindo. E aí, no meio da reunião de alinhamento, a equipe de operações vira pra você e diz, legal, mas eu preciso arrastar uma barrinha aqui pra mudar o número da base, arrumar essa célula pra simular o cálculo financeiro do mês. Nossa! Ou seja, eles querem editar o dado direto no painel, ali na hora.

Exato. Quando quem usa o sistema cruza essa linha e quer mexer na célula e rodar a fórmula pesada direto na ferramenta de consumo, o projeto entra em colapso conceitual. Porque deixou de ser um gráfico. Deixou de ser um gráfico. Aquilo não é mais uma visualização. A tela se metamorfoseou numa planilha de banco de dados disfarçada. Tipo um Excel gigante rodando dentro da interface visual. É. E forçar uma biblioteca de gráficos limpos a funcionar como um banco transacional é um erro letal. É por isso que existem plataformas como o sistema Univer, que é tipo a reescrita do Luckysheet, feitos exatamente pra lidar com essa interação celular super densa na web. Caramba! Fica a reflexão de ouro, então. Será que a sua organização tá forçando uma arquitetura visual frágil

a operar como uma planilha contábil pesada? Qual é o custo financeiro oculto de tentar arrancar de um gráfico simples um processamento que só um banco de dados transacional poderia entregar? É uma baita pergunta pra levar pra próxima reunião de planejamento. Sem dúvida. Bom, a nossa imersão analítica de hoje se encerra por aqui. Pra quem acompanhou a gente, espero que o mergulho tenha sido tão revelador pra vocês quanto foi pra nós. Um super abraço, muito obrigada pela companhia e até a próxima jornada guiada pelos dados.

Transcrição gerada localmente por reconhecimento de fala sobre o áudio original e revisada nos termos técnicos; pequenos desvios de grafia podem permanecer.

Antes da biblioteca: quem lê e o que decide?

O erro que gera o painel de quarenta indicadores acontece antes da primeira linha de código, quando ninguém pergunta quem vai ler. Um relatório de leitura, o que a diretoria abre na segunda, precisa de poucos gráficos com meta, comparação e recomendação, e quase nada de interação. Um painel de exploração, o que o time de mídia usa para caçar a campanha que sangra, precisa de filtro, drill-down e período comparado, e aceita densidade que mataria o primeiro. Misturar os dois públicos numa tela só produz o pior dos mundos: denso demais para decidir, raso demais para investigar.

A régua que separa os dois é a mesma que o portal aplica a relatório desde os guias de medição: se quem lê não descobre em dois cliques de onde veio o número, qual a definição da métrica, quando foi atualizada e quem responde por ela, a tela ainda pertence a quem a fez, e não a quem decide. O painel de uma página do glossário, com nove a onze indicadores e denominador explícito em cada um, existe exatamente para caber nessa régua.

Regra da casa: antes de escolher biblioteca, escreva numa frase qual decisão a tela alimenta e quem a toma. Tela sem decisão declarada volta para a mesa de quem pediu; a biblioteca se escolhe depois, e sempre em função dessa frase.

Laboratório visual · A forma visual que explica a decisão

Como escolher um gráfico sem esconder a comparação?

O relatório coloca duas campanhas lado a lado. Uma foi observada durante uma semana; a outra, durante um mês. Escolher barras deixa a diferença fácil de enxergar, mas a comparação ainda precisa de uma base coerente.

Pergunta: qual campanha comparar?. Base: mesmo evento e janela. Leitura: barras com rótulos.
Ilustração esquemática para estudo, sem escala quantitativa. Pergunta: qual campanha comparar? · Base: mesmo evento e janela · Leitura: barras com rótulos. Baixar a ilustração
Ler os dois casos e suas decisões comentadas

O recorte está alinhado

As campanhas usam o mesmo evento de conclusão, a mesma janela e o mesmo critério de inclusão.

Decisão: a condição foi atendida. As definições permitem a comparação proposta, dentro do recorte declarado.

Desenhe com rótulos e tabela para que a leitura possa ser conferida.

O período mudou

Uma série reúne uma semana e a outra reúne um mês; os totais aparecem como se fossem equivalentes.

Decisão: falta conferir ou corrigir. O período explica parte da diferença e impede a leitura direta dos totais.

Alinhe a janela ou separe as séries com uma explicação do limite.

Consultar o fluxo completo em tabela
As séries usam definições e períodos comparáveis?
EtapaO que conferirAção
Nomear a comparaçãoDefina quem decide e qual alternativa será comparada. Um gráfico precisa responder a essa pergunta.Escreva a pergunta acima do esboço.
Conferir a baseIdentifique evento, grupo observado, unidade e período de cada série.Coloque as definições lado a lado.
Verificar equivalênciaBases distintas precisam ser alinhadas ou apresentadas com a diferença explícita, sem sugerir uma comparação direta.Confira unidade, população e janela.
Se atendida: Desenhar e explicarUse posição ou comprimento para comparar valores e escreva unidade, fonte e período junto do gráfico.Ofereça a mesma leitura em tabela.
Se pendente: Corrigir a comparaçãoRecorte um período comparável ou separe as séries e explique o limite da leitura.Refaça a base antes de escolher a cor.
Testar a conclusãoPeça que alguém diga que decisão os dados permitem e o que permanece incerto.Registre a ação sustentada pelo recorte.

O que preparar no trabalho

Especificação com pergunta, séries, evento, unidade, período, fonte e tabela equivalente.

Ponto de atenção. Uma cor consistente melhora a leitura, mas não corrige denominadores ou janelas incompatíveis.

Base do exercício: a seção correspondente desta página. Casos ilustrativos construídos para estudo; não representam resultados medidos. Revisão do módulo: .

O tipo certo por pergunta: a hierarquia da percepção

Nos experimentos publicados em 1984 no Journal of the American Statistical Association, William Cleveland e Robert McGill observaram maior precisão na comparação de valores por posição em escala comum do que em codificações como ângulo e área. Para comparar categorias com precisão, barras ordenadas oferecem uma referência comum; para acompanhar uma série no tempo, a linha evidencia a evolução. Rótulos, marcadores e padrões completam a cor quando a informação precisa ser distinguida por toda a audiência.

Linha com meta

Para evolução no tempo. A meta desenhada como referência na própria escala transforma a linha de curiosidade em julgamento: acima ou abaixo do combinado.

Barra ordenada

Para ranquear canais, segmentos ou campanhas. A ordenação decrescente faz o olho ler a resposta sem procurar; ordem alfabética joga esse trabalho no leitor. Categoria com ordem própria, como etapa do funil, faixa de horário ou dia da semana, mantém essa ordem, e o valor decide só quando a pergunta é qual é maior.

Bullet chart

Para meta contra realizado. Stephen Few propôs o bullet chart como alternativa compacta ao velocímetro: realizado, meta e faixas de referência aparecem na mesma escala, permitindo empilhar vários indicadores na mesma coluna.

Waterfall

Para explicar de onde veio uma variação: o que somou e o que subtraiu entre o número de partida e o de chegada, barra a barra, sem parágrafo de justificativa.

Small multiples

Para comparar a mesma métrica entre regiões ou squads: uma grade de gráficos pequenos e idênticos, em que a exceção salta aos olhos porque tudo o mais é igual.

Variance table

Para o valor exato: realizado, plano e período anterior lado a lado, com algarismos tabulares alinhados. Em reporte executivo, a tabela é cidadã de primeira classe.

A hierarquia de Cleveland e McGill segue firme no topo e perde força abaixo dele. Davis e colegas (IEEE TVCG, 2024) mediram 109 pessoas em 130.800 julgamentos, e só cerca de 22% delas reproduziram a ordem canônica inteira; posição e comprimento ficaram estáveis, enquanto ângulo, área e cor trocaram de lugar entre pessoas, e a barra liderou as seis ordens individuais mais frequentes. McColeman e colegas (IEEE TVCG, 2021) acharam um efeito maior que o da escolha do canal: a quantidade de marcas na tela pesou cerca de uma ordem de grandeza mais. Para quem monta painel, a consequência prática é dupla: comparar valores próximos pede posição ou comprimento, e cortar séries rende mais que trocar a forma.

Limites numéricos deste guia: convenções da casa, com a referência externa mais próxima
DecisãoConvenção da casaReferência externa
Séries num mesmo gráficoAté quatro com legenda; até cinco com rótulo direto na ponta; até oito só com marcador e traço distintos; acima disso, small multiples ou o grupo "outros".Guias editoriais ficam entre quatro e sete (UK Analysis Function, quatro linhas; Atlassian, cinco a seis; Datawrapper, sete). Paletas de referência param em sete a nove cores (Paul Tol bright 7, muted 9; Okabe-Ito 8).
Ordem das categoriasPor valor, do maior para o menor, quando a pergunta é qual é maior; ordinais mantêm a ordem natural.Fygenson, Franconeri e Bertini (IEEE VIS 2023): o arranjo muda a mensagem que o leitor tira.
Quinze categorias na barra ordenada, três séries por grupo nas colunas agrupadas, oito degraus no waterfall, três fatias na roscaLimites para simplificar a leitura, adotados no catálogo.Nenhum experimento fixa esses números. Stokes e colegas (IEEE VIS 2022) não acharam penalidade em gráficos muito anotados, então o teto de anotação também é escolha editorial.

Quando revisar a forma: pizzas com muitas fatias dificultam comparar valores próximos; velocímetros ocupam espaço sem mostrar necessariamente o histórico; efeitos 3D podem distorcer proporções. O limite de três fatias adotado neste guia é uma recomendação editorial para simplificar a leitura. Confira qual comparação a forma escolhida permite e use barras quando a tarefa exigir precisão.

Título, eixo e escala: onde o gráfico engana

O título de um gráfico de decisão afirma a conclusão, e o subtítulo carrega métrica, recorte e período. Na reunião de segunda, "Assistentes de IA já são o segundo canal de leads" diz mais que "Leads por canal", e a linha de baixo, "leads por canal de origem, agosto de 2026, base do CRM", diz o que foi medido. A frase precisa coincidir com o traço mais saliente do desenho: quando texto e destaque divergem, o leitor segue o gráfico (Kim e colegas, EmphasisChecker, IEEE VIS 2023). Arunkumar e colegas observaram em 2025, com 104 pessoas, que o texto foi lembrado primeiro em 83% dos casos, por isso uma manchete errada pesa mais que um eixo mal escolhido.

Em painel que atualiza sozinho, a manchete sai do dado por cálculo, com a mesma regra que gera o número; manchete escrita à mão envelhece na primeira atualização. Antes de publicar, faça a pergunta aberta "o que você conclui deste gráfico?" a duas ou três pessoas de fora do projeto. Quadri e colegas (CHI 2024) pediram exatamente isso e só 41% das respostas, 117 de 288, coincidiram com o objetivo de quem desenhou.

O eixo é o segundo lugar onde o gráfico engana, e o zero se decide pela marca. Barra e área codificam o valor no comprimento ou na superfície, então partem sempre do zero. Linha e dispersão codificam posição e podem começar acima de zero, desde que o eixo escreva onde começa e o corte parta de um número redondo (IBM Carbon, ONS e UK Analysis Function convergem nisso). Long e Kay (CHI 2024) não acharam prejuízo para comparar quando o corte preserva a ordem dos valores; Correll e colegas (CHI 2020) mostraram que a sensação de exagero persiste mesmo com aviso. O teto também é escolha: o mesmo valor parece maior quando fica perto da ponta alta do eixo (Bradley e colegas, IEEE TVCG 2024, 300 pessoas), então registre o domínio usado.

Truques de eixo e escala: erro de pessoas e acerto de modelos multimodais, em dois estudos distintos
TruquePessoas: erro contra a versão correta (Rho e colegas, CogSci 2024, 68 participantes)Modelos: acerto em perguntas sobre o gráfico (Misleading ChartQA, EMNLP 2025, 3.026 exemplos)
Eixo de tempo com intervalos irregularescerca de 15,4 vezes mais erronão separado no estudo
Eixo Y invertidocerca de 7,1 vezes25,42%
Eixo duplocerca de 6,3 vezes33,08%
Barra com eixo truncadocerca de 1,4 vez32,14%
Ordem inadequada das categoriasnão medido23,57%
Dado ausentenão medido25,71%

Os dois estudos medem coisas diferentes e não se comparam linha a linha. A amostra de Rho e colegas é pequena; leia as razões como ordem de grandeza.

Regra da casa para eixos: barra e área partem do zero; linha e dispersão podem cortar com aviso escrito no eixo. Eixo duplo, eixo invertido e eixo de tempo com intervalos irregulares ficam fora, com uma exceção nomeada: o Pareto, cuja escala da direita é o acumulado da mesma grandeza, de zero a cem, escrito por extenso. Duas grandezas diferentes viram dois gráficos alinhados.

Média e distância entre séries se desenham, porque o olho erra as duas. A média estimada a olho é puxada para os trechos de maior variação e para o extremo da série: Moritz e colegas (IEEE VIS 2023, 140 e 420 pessoas) mediram erro de 3% na linha contra 0,7% nos pontos, e Savalia e colegas (IEEE VIS 2025) viram o desvio rumo ao extremo global. A distância entre duas linhas que sobem juntas também é subestimada, a ilusão do seno descrita num artigo curto do IEEE VIS 2024. Por isso a média entra como linha de referência rotulada, e a diferença entre séries vira uma série própria.

Incerteza aparece no desenho. Taxa calculada sobre base pequena ganha intervalo, como na barra de intervalo do catálogo, ou pontos de frequência no lugar de um número limpo. No quantile dotplot, cada ponto vale uma fração igual da distribuição, e o leitor conta pontos em vez de estimar área: Fernandes e colegas (CHI 2018) registraram decisões em 97% do ganho ótimo com ele, cinco pontos acima do controle. Hofman, Goldstein e Hullman (CHI 2020) mostraram que o intervalo de confiança faz superestimar o efeito frente ao intervalo de predição, então diga no subtítulo qual dos dois está desenhado. Para comparar razões com bases diferentes, a tabela com a razão já calculada levou à estratégia correta com mais frequência que as barras (Xiong e colegas, IEEE TVCG, 2024).

Fontes consultadas em 08/10/2026: Stokes, Setlur, Cogley, Satyanarayan e Hearst (IEEE VIS 2022, TVCG 2023); Kim e colegas, EmphasisChecker (IEEE VIS 2023); Arunkumar e colegas (2025); Quadri e colegas (CHI 2024); Long e Kay, "To Cut or Not To Cut?" (CHI 2024); Correll e colegas (CHI 2020); Bradley, Strain, Jay e Stewart (IEEE TVCG 2024); Rho, Rau, Bharti e colegas (CogSci 2024); Chen e colegas, Misleading ChartQA (EMNLP 2025, arXiv 2503.18172); Moritz e colegas (IEEE VIS 2023); Savalia e colegas (IEEE VIS 2025); Fernandes e colegas (CHI 2018); Hofman, Goldstein e Hullman (CHI 2020); Xiong, Lee-Robbins, Zhang, Gaba e Franconeri (IEEE TVCG 30(7), 2024); guias de gráficos do UK Analysis Function, ONS e IBM Carbon.

SVG ou canvas: o custo de cada pixel

SVG e canvas são duas opções frequentes de renderização. Em SVG, barras, linhas e rótulos podem ser elementos do DOM: recebem estilos por CSS, preservam nitidez ao ampliar e permitem semântica acessível quando o gráfico é marcado corretamente. Em canvas, o desenho é um bitmap, útil para séries densas; tokens de cor podem ser lidos por JavaScript e aplicados ao desenho. O bitmap, por si só, não oferece texto selecionável nem expõe os dados ao leitor de tela. O limite de desempenho depende do dispositivo, da quantidade de elementos e das interações.

A recomendação do guia de diagramas se aplica aos dados: comece com SVG em figuras editoriais e painéis de leitura; avalie canvas quando a densidade ou a atualização justificarem a escolha. Teste a carga real antes de migrar. Nos gráficos críticos do portal, publique um resumo com a conclusão e uma tabela equivalente em HTML, independentemente do formato. O ECharts oferece os dois renderizadores, permitindo reaproveitar a configuração compatível. O manual do ECharts recomenda canvas acima de cerca de mil elementos e lembra que o SVG gasta menos memória, o que pode favorecê-lo em Android de entrada; trate o número como experiência relatada pelo projeto e confirme no aparelho do seu público.

Uma biblioteca por projeto: a régua de setembro de 2026

Escolha uma biblioteca principal para manter paleta, tipografia, tooltip e animação consistentes. A tabela compara cenários de uso e recursos consultados em setembro de 2026. Uma segunda biblioteca requer um caso que a primeira não cubra e uma justificativa de manutenção.

BibliotecaQuando escolherEstado verificado (set/2026)
Apache ECharts Primeira tentativa para painel operacional: filtro, zoom, série longa, atualização frequente. A versão 6.0, publicada em 30/07/2025, trouxe o sistema de coordenadas matrix, o diagrama de acordes (chord), a dispersão com jitter para beeswarm, o eixo quebrado, a troca de tema em tempo de execução com setTheme e um tema padrão novo. A 6.1, publicada em 19/05/2026, mudou o segundo argumento de tooltip.valueFormatter para rawDataIndex e deixou de tratar axis.startValue como mínimo do eixo. Desenha em SVG ou canvas com a mesma option; o manual recomenda canvas acima de cerca de mil elementos e registra que o SVG gasta menos memória e pode ir melhor em Android de entrada.
Observable Plot / visx Figura editorial em página de conteúdo: SVG leve, estilizado por token, sem runtime pesado. Plot segue a gramática concisa da equipe do D3; visx entrega primitivas D3 para quem monta biblioteca própria em React.
Chart.js Protótipo e relatório leve em canvas, quando a tela pede seis gráficos comuns e nenhuma sofisticação. Tipos comuns e configuração para prototipar a tela; em canvas, acompanhe o gráfico com uma alternativa textual.
ApexCharts Painel investigativo sem trocar de biblioteca: anotação, medição e filtro cruzado prontos. A versão 6, de julho de 2026, ampliou anotações, medição, filtros cruzados e histórico de ações. A versão 7.0, de 25/08/2026, tornou nove recursos importações opcionais e trouxe mudanças de migração; confira módulos e licença antes de atualizar.
Recharts / MUI X Charts Projeto React que quer gráfico como componente, com recursos de acessibilidade integrados. No Recharts 3.0, o guia de migração registra que accessibilityLayer passou a vir ligado por padrão; MUI X Charts v9, de 08/04/2026, traz navegação por teclado ligada por padrão.
uPlot Série temporal massiva em tempo real: telemetria, monitoramento, tick de mercado. Cerca de 50 kB minificados, segundo o README consultado em 10/09/2026. Usa canvas e prioriza séries temporais; o próprio projeto recomenda atenção a streaming com mais de 100 mil pontos visíveis.
Lightweight Charts Gráfico financeiro: candlestick, OHLC, profundidade de ofertas. Biblioteca da TradingView, base de 35 kB na versão 5; caso especializado que nenhuma generalista cobre tão barato.
D3.js Visualização sob medida com anotação e narrativa, quando o formato pedido não existe em catálogo. Oferece primitivas para construir visualizações. Para gráficos comuns, compare o trabalho de composição e manutenção com uma biblioteca de componentes prontos.

Fontes: notas oficiais de lançamento do ECharts 6.0.0 e do ECharts 6.1.0, com a seção de mudanças incompatíveis, conferidas em 08/10/2026; manual do ECharts, "Canvas vs. SVG"; catálogo de lançamento do ECharts 6.1; histórico do ApexCharts; migração para ApexCharts 7.0; MUI X Charts v9, de 08/04/2026; guia de migração do Recharts 3.0, conferido em 08/10/2026;README do uPlot e documentação da TradingView. Consulta inicial em 02/09/2026, com revisão dessas referências em 10/09/2026.

Confira a licença para o uso previsto. O ApexCharts oferece Community para organizações elegíveis com receita anual inferior a US$ 2 milhões; outros usos podem exigir Commercial ou OEM, inclusive conforme as condições de redistribuição. O Highcharts exige licença comercial para uso comercial, e o MUI X possui recursos pagos. Registre a versão, o plano e as condições aplicáveis antes de integrar; a disponibilidade do código não garante licença permissiva.

Cor por token e os números da norma

No WebAIM Million 2026, a avaliação automática com WAVE de um milhão de páginas iniciais, realizada em fevereiro de 2026, encontrou falhas detectáveis de WCAG em 95,9% da amostra e texto com baixo contraste em 83,9%. A medição abrange páginas iniciais, sem estimar uma taxa específica para gráficos. Pela WCAG 2.2, textos comuns exigem contraste mínimo de 4,5:1, com a exceção de 3:1 para texto grande prevista no critério 1.4.3. O critério 1.4.11 exige 3:1 para elementos gráficos necessários à compreensão, e o 1.4.1 impede transmitir informação apenas pela cor.

A paleta do gráfico segue as variáveis do guia de tokens, com variantes conferidas para cada tema. OKLCH ajuda a ajustar as cores de forma perceptualmente mais uniforme, mas não garante contraste por si só. A função contrast-color(), em Baseline desde abril de 2026 segundo a MDN, escolhe preto ou branco para uma cor de referência. Mantenha uma alternativa para navegadores antigos e confira a legibilidade de textos pequenos, sobretudo em tons intermediários.

Além do contraste: o gráfico que todo mundo lê

A auditoria também precisa cobrir teclado, foco e leitor de tela. MUI X Charts v9 oferece navegação por teclado por padrão, e o Recharts 3.0 passou a ligar o accessibilityLayer por padrão; esses recursos ajudam, mas não validam toda a experiência. Cada gráfico crítico do portal deve trazer um resumo com a conclusão e uma tabela com os mesmos dados, como alternativa de leitura e conferência.

A WCAG 2.2 continua sendo a régua. O rascunho da WCAG 3, de 10/09/2026, diz que o algoritmo de contraste da nova versão "is yet to be determined", e o APCA, que chegou a constar do rascunho, saiu dele em julho de 2023; use o APCA só como conferência complementar. Os pontos abaixo cobrem o que a razão de contraste não mede.

Além do contraste: regra, fonte e como aplicar
PontoRegraComo aplicar
Exceção do 1.4.11A marca fica dispensada de 3:1 contra o fundo quando os rótulos e os valores estão escritos no gráfico ou numa tabela equivalente (Understanding WCAG 2.2, critério 1.4.11).Use a exceção com a tabela visível ou a um clique; o rótulo escrito continua precisando de 4,5:1.
Partes vizinhasFatia, segmento empilhado e bloco de treemap encostados precisam de 3:1 entre si ou de um separador na cor do fundo.A rosca do catálogo usa contorno de 3 pixels na cor da superfície entre as fatias.
Texto que cita cor ou forma"A linha verde" ou "a barra escura" não chega a quem não vê a cor nem ao leitor de tela; o guia de cores do UK Analysis Function (atualizado em 12/02/2026) aplica o critério 1.3.3 da WCAG e pede que o texto não se apoie em cor nem em forma para apontar o gráfico.Nomeie o elemento pelo que ele representa e pelo rótulo escrito no desenho: "a série dos assistentes de IA", "o traço rotulado como meta". Legenda que só casa cor com nome cai no mesmo problema; prefira rótulo direto.
Cores forçadas do WindowsPela CSS Color Adjustment 1 (recomendação candidata de 16/12/2025), o SVG conserva fill e stroke do autor; só currentColor herda a cor do sistema, e canvas nunca se adapta.Mapeie os papéis do gráfico para cores do sistema, como no trecho abaixo; reserve forced-color-adjust: none para peças pontuais, nunca para o gráfico inteiro.
TritanopiaAs matrizes de Machado, Oliveira e Fernandes (2009) servem para deuteranopia e protanopia; para tritanopia, a escolha válida é o método de Brettel, Viénot e Mollon (1997), segundo a análise do DaltonLens (2021).Trate qualquer simulação como aproximação e confirme com pessoas; a oficina de paleta desta página aplica os dois métodos.
Paletas de referênciaOkabe-Ito tem oito cores; Paul Tol publica a bright com sete e a muted com nove, e recomenda escala sequencial acima disso.Parta de uma delas, ajuste a claridade aos dois temas do site e meça de novo.
Padrão no EChartsO decal, padrão de preenchimento que distingue séries sem cor, vem desligado.Ligue com aria: { enabled: true, decal: { show: true } }.
Teclas de navegação por pontoMUI X Charts v9: setas para a esquerda e a direita andam dentro da série, para cima e para baixo trocam de série. O Data Navigator (Elavsky, Nadolskis e Moritz, IEEE TVCG, 2024) monta essa navegação como lista, árvore ou grafo sobre qualquer renderização.Adote o mesmo mapa de teclas em todos os gráficos do produto e anuncie valor, série e posição a cada passo.
@media (forced-colors: active) {
  .grafico text { fill: CanvasText; }
  .grafico .grade, .grafico .eixo { stroke: GrayText; }
  .grafico .serie-destaque { fill: Highlight; stroke: Highlight; }
  .grafico .meta { stroke: CanvasText; }
}

O Chartability organiza a revisão por princípios de percepção, operação, compreensão e compatibilidade, seguindo o referencial POUR do W3C. Use o checklist para localizar barreiras e teste a interação com tecnologias assistivas. O Highcharts também oferece sonificação para representar tendências e padrões por áudio, como complemento à descrição e aos dados em texto.

Fontes consultadas em 08/10/2026: Understanding WCAG 2.2, critério 1.4.11; rascunho da WCAG 3; CSS Color Adjustment Module Level 1; UK Analysis Function, cores em gráficos; DaltonLens, revisão dos simuladores de daltonismo; paletas de Paul Tol (página pessoal no SRON); opção aria.decal do ECharts; MUI X Charts v9.

Todo número exibido tem fonte, data e dono

A origem permite conferir o indicador antes de usá-lo em uma decisão. Os guias de medição do portal registram a escada de confiança do dado e o dono da métrica. Na tela, mantenha fonte e data de atualização junto do gráfico, o denominador de cada porcentagem explícito e o responsável pelo indicador acessível. A regra local dos dois cliques orienta o acesso à fonte, à definição, à atualização e ao responsável.

Registre filtro e período comparado na URL quando a visão precisar ser compartilhada, conforme o guia de navegação. Assim, a equipe abre o mesmo recorte do painel. Em React, nuqs oferece recursos para esse padrão; em qualquer stack, o critério de aceite é copiar a URL, abrir em outra máquina com a mesma permissão e encontrar a mesma seleção de dados.

Números, datas e estados: o que o gráfico escreve

Número de gráfico em português segue a convenção brasileira do começo ao fim: vírgula decimal, ponto de milhar, mês abreviado em minúsculas e unidade escrita. A API Intl do navegador resolve quase tudo, e a saída real precisa ser conferida antes de virar regra, porque ela traz detalhes que o olho não vê. A tabela abaixo foi gerada no Node 25.4.0 em 08/10/2026, com a localidade pt-BR.

Saída real de Intl em pt-BR (Node 25.4.0, 08/10/2026) e o uso no gráfico
ChamadaEntradaSaídaOnde usar
NumberFormat("pt-BR", { notation: "compact" })1234 · 12500 · 3400000 · 56000000001,2 mil · 12,5 mil · 3,4 mi · 5,6 biRótulo de eixo e cartão. Entre o número e "mil" vem um espaço inseparável (U+00A0); teste de texto que compara com espaço comum falha.
NumberFormat("pt-BR", { style: "percent", maximumFractionDigits: 1 })0,32832,8%Taxa, com o símbolo colado ao número. Diferença entre duas taxas se escreve em pontos percentuais, "p.p.", e nunca em %.
NumberFormat("pt-BR", { style: "currency", currency: "BRL" })1234,5R$ 1.234,50Tabela e dica. O espaço depois de "R$" também é inseparável.
DateTimeFormat("pt-BR", { month: "short", year: "2-digit" })15/09/2026set. de 26Não serve para eixo apertado. O rótulo curto "set/26" se monta à mão a partir do mês e do ano; a data completa vai na dica.
DateTimeFormat("pt-BR", { dateStyle: "long" })15/09/202615 de setembro de 2026Dica, tabela e linha de fonte. Na virada de mês ou de ano, o eixo ganha um rótulo-marco com o ano.

A tabela que acompanha o gráfico distingue zero de ausência com os sinais convencionais do IBGE, e eles valem para a tabela alternativa e para a exportação. A tabela de baixo transcreve o item 4.8.1 das Normas de apresentação tabular (IBGE, 3ª edição, 1993), que pede ainda uma nota geral explicando os sinais usados (item 4.8.2).

Sinais convencionais, item 4.8.1 das Normas de apresentação tabular (IBGE, 1993)
SinalSignificadoNo gráfico
-Dado numérico igual a zero não resultante de arredondamentoDesenha zero.
..Não se aplica dado numéricoNão desenha; a nota explica por quê.
...Dado numérico não disponívelLacuna visível, sem interpolar os vizinhos.
xDado omitido a fim de evitar a individualização da informaçãoNão desenha e não entra em total que permita deduzi-lo.
0 · 0,0 · 0,00Zero resultante de arredondamento de dado originalmente positivoDesenha zero e mantém o valor original na exportação.
-0 · -0,0 · -0,00Zero resultante de arredondamento de dado originalmente negativoIdem, com o sinal preservado.

Estado também é dado. Um gráfico vazio sem explicação parece queda a zero, e quem decide na segunda reage ao desenho. Cada estado diferente do normal ganha uma frase com a causa e a próxima ação, no mesmo vocabulário que a equipe usa no painel administrativo, para que o alerta de uma tela seja o mesmo da outra.

Estados do gráfico: o que aparece e o texto que explica a causa
EstadoQuandoO que mostrarTexto de exemplo
CarregandoPrimeira busca dos dadosNada até cerca de um segundo; depois, esqueleto com a forma do gráfico, só no primeiro carregamento."Carregando leads por canal."
AtualizandoNova busca com dados já na telaMantém o desenho anterior e marca a atualização em andamento; nunca volta ao esqueleto."Atualizando. Valores de 07/10/2026 às 9h."
Sem credencialA integração perdeu ou nunca teve a chaveSem desenho; nome da fonte e quem configura."Sem credencial do CRM. Peça ao dono da integração."
Fonte fora do arA fonte respondeu com erro ou não respondeuÚltimo valor válido, marcado como antigo, ou nada."Fonte fora do ar desde 9h10. Último dado válido: 07/10/2026."
Sem sérieA consulta voltou vazia para o recorteEixos sem marca e o recorte escrito."Sem registros para Instagram em setembro de 2026."
Sem massaHá dados, mas a base é pequena demais para a taxaContagem bruta no lugar da taxa, ou intervalo."Sem massa: 12 leads no período, abaixo do mínimo de 100 para a taxa."
Dado atrasadoO ponto mais recente é mais velho que o prazo esperado da fonteA série, com aviso e as duas datas."Rotina rodou em 08/10/2026; dado mais recente é de 05/10/2026, e a fonte costuma entregar em um dia."

"Atualizado em" informa quando a rotina rodou, e a idade do dado mais novo é outra informação. Um painel pode ter rodado hoje sobre um dado de três dias atrás, e só as duas datas juntas mostram o atraso. Os textos de exemplo usam valores hipotéticos, inclusive o mínimo de 100 leads, que cada operação calibra para a própria métrica.

Celular e toque: a versão de 390 pixels

No celular, o gráfico precisa de uma versão própria, decidida pela tarefa que ela preserva. Encolher o desenho de 1.280 pixels até caber em 390 derruba os rótulos abaixo do legível; Kim, Moritz e Hullman (EuroVis 2021) catalogaram 76 estratégias responsivas em 378 pares de gráficos para desktop e celular, entre elas transpor os eixos, cortar dados e trocar a legenda por rótulo direto.

Este guia ainda não pratica isso nas quarenta figuras: cada uma tem largura mínima de 600 pixels e rola na horizontal dentro do quadro, com a tabela de dados logo abaixo como leitura completa. Para gráfico de produto, a referência é a tabela a seguir.

Da versão de desktop à de 390 pixels, pela tarefa que precisa sobreviver
Tarefa preservadaNo desktopEm 390 pixels
Comparar categorias com nome longoColunas verticaisTranspor para barra horizontal: o nome cabe inteiro à esquerda e o valor vai na ponta.
Ranquear muitas categoriasQuinze barrasAs cinco a oito maiores e o grupo "outros", com a lista completa na tabela.
Identificar sériesLegenda no topoRótulo direto na ponta de cada linha; a legenda sai.
Ler a escalaSeis a dez linhas de grade, como orienta o ONSTrês a seis linhas de grade e menos rótulos de eixo.
Comparar a mesma métrica entre gruposSmall multiples em três colunasSmall multiples em uma coluna. Brehmer, Lee, Isenberg e Choe (IEEE TVCG, 2020) mediram 96 pessoas no próprio celular, e os painéis pequenos foram mais rápidos que a animação.
Acompanhar série longaDoze meses com zoomPeríodo mais curto por padrão e seletor de período; altura própria, sem herdar a proporção do desktop.

O toque muda as regras da interação. Não existe passar o mouse, então a dica abre por toque e precisa ser dispensável sem mover o foco, persistente enquanto a pessoa lê e parada, sem sumir por tempo (WCAG 2.2, critério 1.4.13). Legenda clicável e botão de período precisam de alvo com pelo menos 24 por 24 pixels (critério 2.5.8). Ctrl mais roda do mouse não existe no celular: zoom de gráfico vira botão ou controle deslizante de período. Dado que atualiza sozinho precisa de botão de pausa (critério 2.2.2).

IA gerando gráficos: o número fabricado é o defeito mais caro

Um agente pode gerar uma option do ECharts ou uma especificação do Vega-Lite. A sintaxe precisa ser validada antes de renderizar, como no uso de mermaid.parse() descrito no guia de diagramas. Confira também os dados: modelos podem preencher lacunas ou alterar valores de forma plausível. A aparência do gráfico e uma configuração válida não demonstram que os números correspondem à fonte.

Regra da casa: a fonte fornece os valores, e o agente prepara a visualização. Antes de publicar, confira a série contra a consulta de origem, inclusive totais e extremos; registre de onde a especificação lê os dados; preserve lacunas e rejeite valores sem origem identificada. Especificações declarativas facilitam a inspeção, mas a validação também precisa examinar transformações, cálculos e filtros.

O modelo que lê um gráfico erra tanto quanto o que gera. Em benchmarks com gráficos reais, os melhores modelos multimodais ainda ficam longe das pessoas quando a pergunta exige raciocínio, e a queda é maior quando falta o rótulo com o valor. A tabela resume os números publicados, cada um no próprio estudo e com o modelo avaliado na época.

Modelos multimodais lendo gráficos: resultados publicados, por estudo
EstudoO que medeResultado
CharXiv (NeurIPS 2024, arXiv 2406.18521)Raciocínio sobre gráficos de artigos científicosGPT-4o com 47,1% de acerto; pessoas, 80,5%
ChartMuseum (NeurIPS 2025, arXiv 2505.13444)Perguntas que exigem raciocínio visualGemini 2.5 Pro com 63,0%; pessoas, 93%
ChartQAPro (Findings ACL 2025, arXiv 2504.05506)1.341 gráficos mais variados que o ChartQAClaude Sonnet 3.5 cai de cerca de 90,5% no ChartQA para 55,81%
CHOCOLATE (Findings ACL 2024)Legendas de gráfico geradas por modelos213 de 1.187 legendas factualmente corretas, cerca de 18%
MMC (NAACL 2024) e DePlot (Findings ACL 2023)Converter gráfico em tabela e raciocinar sobre elaA conversão em tabela é a tarefa mais frágil; com a tabela pronta, o raciocínio melhora

A consequência para quem publica é entregar ao leitor, humano ou modelo, a tabela que ninguém deveria precisar extrair da imagem. A descrição também se gera a partir dos dados, nunca da imagem, e separa o que o dado diz da interpretação (Eliza e Rahman, arXiv 2607.25021, pré-print). Lundgard e Satyanarayan (IEEE TVCG 2022) analisaram 2.147 frases com 30 leitores cegos e 90 videntes e propuseram quatro níveis de descrição, que servem de roteiro:

  1. Construção: tipo de gráfico, eixos, unidade, período e série.
  2. Estatística: extremos, média ou mediana e lacunas, com o número escrito.
  3. Tendência: direção, mudança de ritmo e exceção.
  4. Contexto: causa provável ou consequência, marcada como interpretação e não como dado.

Gráfico gerado por IA passa por três portões, nesta ordem, e o primeiro não prova os outros dois. Ford e Rios (arXiv 2506.06175, pré-print sem revisão por pares) encontraram alucinação em 6 de 100 gráficos gerados, enquanto o erro de execução ficava em 4,5% em 2025; o VisEval (IEEE VIS 2024) avalia validade, legalidade e legibilidade em separado pelo mesmo motivo.

  1. Executa: a especificação passa no validador e renderiza sem erro.
  2. É fiel à base: total, mínimo, máximo e número de linhas batem com a consulta de origem, e a lacuna continua null.
  3. É legível e acessível: título com a conclusão, eixos honestos, contraste nos dois temas, descrição e tabela.

Rastreadores de IA como GPTBot, ClaudeBot e PerplexityBot não executam JavaScript, segundo a medição publicada pela Vercel em 17/12/2024; gráfico montado só no cliente não existe para eles. O resumo e a tabela vão no HTML que o servidor entrega, e a marcação deixa a figura legível por máquina:

Quando o caso sai do gráfico pronto

Três fronteiras separam este guia de projetos maiores, e cruzar qualquer uma sem perceber é onde o orçamento estoura. A primeira é a do formato sob medida: quando a visualização pedida não existe em catálogo e carrega anotação e narrativa próprias, o caso vira D3, com prazo de projeto e não de tarefa. A segunda é a da planilha: quando quem usa precisa editar célula, fórmula e filtro dentro do produto, a resposta deixou de ser biblioteca de gráfico e virou planilha embutida, território do Univer, sucessor declarado do Luckysheet pelos próprios mantenedores. A terceira é a das redes: nós e arestas, força e comunidade pertencem ao guia de diagramas e grafos, com Cytoscape.js e Sigma.js.

Em todas as três, a pergunta de triagem é a mesma que abriu este guia: quem usa a tela e o que essa pessoa decide ali. Leitor que só lê fica no gráfico pronto; usuário que edita, salva e repassa cruzou a fronteira do produto, e produto se orça com licença conferida, teste e suporte.

Oficina: transforme um arquivo em gráfico sem esconder os dados ausentes

Valide a entrada antes de calcular a taxa e use a mesma seleção no gráfico e na tabela. Você termina esta oficina com um recorte exportável, sua origem declarada e filtros que sobrevivem ao histórico do navegador.

No exercício fictício, uma agência recebeu resultados de campanhas por mês. Uma linha registra zero vendas; outra ainda não tem informação. Converter os dois casos em zero muda a leitura do relatório. O contrato da entrada, isto é, as regras para aceitar cada campo, precisa conservar essa diferença.

A API URLSearchParams permite gravar filtros no endereço. Ela não transporta o arquivo importado. Quem abrir o link precisará carregar o mesmo conjunto para reproduzir a seleção. A origem do número e a responsabilidade por ele continuam no contrato de métrica.

Importe, provoque a falha e recupere o recorte

  1. Leia o JSON da amostra. Cada linha possui identificador único, canal, período, contatos e vendas. A fonte descreve de onde o conjunto veio; o texto não comprova sua autenticidade.
  2. Valide a entrada. Compare a venda zero com a ausência marcada por null. Quando contatos for zero, a taxa precisa explicar que falta base para o cálculo.
  3. Injete um identificador repetido. O painel bloqueia o conjunto inteiro e indica a linha; ele não escolhe silenciosamente qual registro preservar. Restaure a amostra para continuar.
  4. Filtre um mês, exporte e confira cada linha. Use voltar e avançar no navegador. Para importar dados próprios, mantenha este formato e um recorte de até 500 linhas.

Dados do exercício: valores fictícios criados em 6 de outubro de 2026. Nenhum resultado representa a Leadlovers ou seus clientes. O arquivo é lido localmente; esta oficina não o envia a um servidor.

Use vendas como inteiro ou null; contatos como inteiro não negativo. Limite do arquivo: 200 kB. IDs aceitam letras minúsculas, números e hífen.

Ative JavaScript para validar a amostra. O roteiro e o código permanecem disponíveis.

Nenhum conjunto validado.

Mesmos registros das barras; taxa = vendas divididas por contatos, por linha.
CanalPeríodoContatosVendasTaxa e condição

Leve o contrato para o seu código

Separe validação, seleção e apresentação. O trecho abaixo pressupõe que os tipos e limites já foram validados; ele mostra por que ausência não deve ser substituída antes da divisão.

function taxa(linha) {
  if (linha.vendas === null) return { valor: null, motivo: "Sem informação" };
  if (linha.contatos === 0) return { valor: null, motivo: "Sem base" };
  return { valor: linha.vendas / linha.contatos, motivo: null };
}
const recorte = linhas.filter(linha => !periodo || linha.periodo === periodo);
// Use recorte no gráfico, na tabela e na exportação.
const endereco = new URL(location.href);
if (periodo) endereco.searchParams.set("of-periodo", periodo);
else endereco.searchParams.delete("of-periodo");
history.pushState(null, "", endereco);

O erro a procurar é uma taxa calculada a partir de linhas incompatíveis. Vendas únicas e contatos precisam pertencer ao mesmo período e à mesma população. A validação desta amostra impede vendas maiores que contatos porque esse é o contrato didático escolhido; outro indicador pode exigir uma regra diferente.

Prompt para adaptar: "Implemente este contrato de dados sem completar lacunas. Entregue validação por linha, tabela e gráfico a partir da mesma seleção, filtros na URL e exportação com fonte. Mostre os testes de ID repetido, null, zero e período sem linhas. Não conecte um CRM neste exercício."

Continue nos laboratórios do curso: "Gráficos editoriais" mostra o uso de dados do curso; "Filtros em linguagem natural" oferece outro modo de selecionar. A proposta de transições de dados vem depois da validação e ainda é um roteiro de aprofundamento.

Oficina: meça uma série densa sem apagar o pico

Compare SVG e Canvas com a mesma série antes de trocar de renderizador. A oficina mede o trabalho local e mostra como a média pode ocultar um pico, mesmo quando o gráfico parece mais leve.

A documentação do ECharts orienta a escolha pelo ambiente, volume e recursos necessários. Aqui a comparação usa APIs nativas: um caminho SVG e um traçado Canvas. Ela não mede o ECharts nem estabelece um limite universal de pontos.

Compare a mesma carga em condições declaradas

  1. Gere 500 pontos e registre a configuração. Repita com 5.000 e 50.000, mantendo o navegador e a largura. A série é sintética e determinística; nenhum número vem de uma operação comercial.
  2. Alterne o renderizador e execute de novo. O tempo de envio das instruções não equivale à conclusão do trabalho da GPU, o processador gráfico.
  3. Selecione a média por blocos. Compare o pico exibido com o original e abra sua página na tabela. Depois use extremos por bloco para preservar o maior e o menor valor.
  4. Baixe os valores originais e anote navegador, dispositivo e condições. Uma comparação útil precisa explicar também o que foi perdido na agregação.

Carga fictícia: onda matemática com um pico adicional no índice central. Escala vertical fixa de zero a 200 unidades sintéticas; eixo horizontal em ordem de amostra. Os extremos preservam valores, mas não todos os detalhes da curva.

A carga só será criada quando você executar a medição.

O experimento não anima a curva nem atualiza em segundo plano. Isso mantém a comparação utilizável com movimento reduzido. Trocar o tema ou a largura redesenha a mesma série.

Gere a série para consultar seus valores.

Carga sintética, 20 linhas por página; nenhuma linha é removida pela agregação visual.
AmostraValor original

Interprete o tempo e a perda de informação

Performance.now() fornece os marcos usados nesta amostra. O terceiro intervalo inclui atualização da tabela e espera por dois quadros; ele não isola pintura e não mede INP, a latência de interação observada durante o uso da página.

const dados = Float64Array.from({ length: quantidade }, (_, i) =>
  60 + Math.sin(i / 17) * 20 + (i === Math.floor(quantidade / 2) ? 100 : 0)
);
const inicio = performance.now();
desenhar(dados); // Implemente SVG ou Canvas com a mesma escala.
const envio = performance.now() - inicio;
// Para cada bloco: preserve primeiro, mínimo, máximo e último,
// ordenados pelo índice original. Mantenha a base sem agregação.

Uma média menor não corrige o gráfico se a decisão depende do pico. Use média para uma pergunta sobre nível médio; preserve extremos quando limites importam. Se uma lacuna entrar numa série real, quebre o caminho nesse trecho em vez de unir os lados como se houvesse medição.

Prompt para adaptar: "Monte uma comparação SVG e Canvas com entrada idêntica, escala fixa e carga sintética declarada. Separe geração, envio do desenho e espera por quadros. Compare média e extremos sem destruir a base; entregue tabela paginada, exportação e descarte de observadores."

Use "Gráficos editoriais" e "Shader adaptativo" na galeria prática do curso como pré-requisitos. A pauta de partículas com identidade acrescenta outra representação; ela não substitui a conferência dos dados.

Prompts prontos

Painel executivo de uma página

Monte o painel executivo desta operação com no máximo 11 indicadores,
no formato painel de uma página.

Requisitos:
- Cada indicador com meta, período comparado e denominador explícito.
- Meta vs. realizado em bullet chart; variação explicada em waterfall;
  valor exato em variance table com algarismos tabulares.
- Nenhum velocímetro, nenhuma pizza, nenhum efeito 3D.
- Cores derivadas dos tokens do projeto. Resolva os valores antes de
  passá-los à option e atualize a paleta ao trocar o tema.
- Fonte e data de atualização visíveis junto de cada gráfico.

Critérios de aceite:
1. Cada indicador responde a uma decisão declarada em uma frase.
2. Rótulos passam 4,5:1 e formas 3:1 nos temas claro e escuro.
3. Cada gráfico tem resumo em texto e tabela alternativa com os dados.

Gráfico com dados conferíveis

Gere a spec do gráfico (Vega-Lite ou option do ECharts) para a série
abaixo, SEM alterar, completar ou arredondar nenhum valor.

Critérios de aceite:
1. A spec referencia os dados da fonte; nenhum valor digitado à mão.
2. Se um período estiver faltando na série, o gráfico mostra a lacuna,
   em vez de interpolar.
3. Para cada número exibido, você aponta a linha da fonte de onde veio.
4. Se não tiver certeza de um valor, diga que não tem, em vez de
   arriscar.

Auditoria de um painel antes de publicar

Audite o painel anexo nos dois temas do site (claro e escuro):
1. Liste todo rótulo e valor de eixo abaixo de 4,5:1 e toda forma
   abaixo de 3:1 (WCAG 2.2, critérios 1.4.3 e 1.4.11).
2. Aponte séries distinguidas apenas por cor (critério 1.4.1).
3. Verifique se cada gráfico tem resumo em texto e tabela alternativa.
4. Liste todo número exibido sem fonte e data visíveis e toda
   porcentagem sem denominador.
5. Confira se filtro e período sobrevivem ao copiar e colar a URL.
6. Procure, gráfico a gráfico, estes truques pelo nome e diga onde
   aparecem: eixo truncado em barra ou área, eixo duplo com grandezas
   diferentes, eixo invertido, eixo de tempo com intervalos
   irregulares, ordem inadequada das categorias, dado ausente
   desenhado como zero ou interpolado, falta de escala ou de unidade.
7. Confira se o título afirma uma conclusão e se ela coincide com o
   traço mais saliente do desenho.
Devolva as correções em ordem de impacto, sem reescrever o painel.

A lista nomeada de truques no item 6 segue Lo e Qu (IEEE VIS 2024): a detecção de gráfico enganoso por modelo melhorou quando o prompt trouxe as definições dos truques.

Resumo verificável de um gráfico

Escreva o resumo do gráfico a partir da tabela anexa. A imagem
serve só para confirmar o tipo de gráfico.

Formato:
- Uma frase de construção: tipo, métrica, unidade, recorte e período.
- Até três frases com números (extremos, média ou mediana, lacunas).
  Depois de cada número, indique entre colchetes a linha e a coluna
  da tabela de onde ele veio.
- Uma frase de tendência.
- Se houver interpretação ou causa provável, escreva em parágrafo
  separado que comece por "Interpretação:".

Critérios de aceite:
1. Todo número do resumo existe na tabela, com a mesma unidade.
2. Nenhuma lacuna vira zero e nenhum valor é arredondado sem aviso.
3. Nenhuma frase cita cor ou forma para apontar o gráfico.
4. Se a tabela não sustentar uma afirmação, a afirmação sai.

Cores das séries que se distinguem e se leem

Num gráfico com várias séries, isto é, linhas ou grupos de barras comparados lado a lado, cada cor cumpre três tarefas ao mesmo tempo. Ela se separa das vizinhas, aparece com força suficiente sobre o fundo claro e sobre o escuro e continua reconhecível para quem não distingue vermelho de verde.

Comparar códigos hexadecimais, a notação de cor com seis dígitos como #185c96, não diz se duas cores se confundem. A oficina mede a distância no OKLab, espaço de cor em que a distância acompanha como o olho vê. Essa medida se chama delta E OK: zero indica cores idênticas, e números maiores, diferença mais evidente.

A especificação CSS Color 4 do W3C adota 0,02 de delta E OK como diferença apenas perceptível ao ajustar cores que a tela não exibe. Num gráfico, a pessoa precisa reconhecer a série numa marca pequena e de relance. Por isso a oficina alerta abaixo de 0,1, cinco vezes aquele limite, como margem de trabalho.

Contraste compara a luminância relativa da marca e do fundo, uma grandeza física calculada a partir do RGB linear; a claridade percebida é outra medida, o L do OKLab usado no parágrafo anterior. A WCAG 2.2, diretriz de acessibilidade do W3C, pede no critério 1.4.11, sobre conteúdo não textual, pelo menos 3:1 para as partes do gráfico necessárias à leitura. Uma barra amarela some no branco; um azul profundo some no fundo escuro.

Para simular deuteranopia e protanopia, a ausência dos cones sensíveis ao verde e ao vermelho, a oficina aplica as matrizes de Machado, Oliveira e Fernandes, publicadas em 2009, sobre a cor em RGB linear. Para tritanopia, a perda dos cones sensíveis ao azul, essas matrizes não servem, e a oficina usa o método de Brettel, Viénot e Mollon, de 1997, com os parâmetros pré-calculados do libDaltonLens. As duas simulações aproximam a forma mais intensa de cada condição e não substituem o teste com pessoas que convivem com ela.

Mesmo com todas as aprovações, a cor nunca deve ser o único jeito de separar séries. O critério 1.4.1 da WCAG 2.2 pede outro sinal: rótulo direto ao lado da marca, forma diferente do marcador ou padrão de preenchimento, como hachura. A prévia desta oficina escreve o nome de cada série junto da barra, sem depender de legenda.

Monte a paleta, provoque a falha e ajuste

  1. Toque em "Usar exemplo". A paleta fictícia de cinco canais tem falhas de propósito: um amarelo claro demais, um azul escuro demais e pares que se confundem na simulação.
  2. Leia a tabela de contraste. Cada série recebe uma nota contra o fundo claro e outra contra o escuro; aprova quem chega a 3:1 nos dois.
  3. Confira o par mais próximo em cada visão. Um par que separa bem na visão comum pode cair abaixo de 0,1 na deuteranopia.
  4. Toque em "Sugerir ajuste". A série reprovada muda só de claridade em OKLCH, a versão do OKLab em claridade, croma e matiz, até passar 3:1 nos dois fundos.

Dados do exercício: paleta fictícia criada em 6 de outubro de 2026 para mostrar as falhas mais comuns. As contas rodam no seu navegador; nenhuma cor sai desta página.

Ative JavaScript para editar as cores. Sem ele, as tabelas abaixo trazem o resultado já calculado da paleta de exemplo, com fundo claro #ffffff e fundo escuro #0b1220.

Resultado da paleta de exemplo: E-mail fica abaixo de 3:1 no fundo escuro e Orgânico no claro; WhatsApp e Anúncios se confundem na deuteranopia, E-mail e Indicação na protanopia, e WhatsApp e Indicação na tritanopia.

Contraste de cada série contra os dois fundos; aprova quem chega a 3:1 nos dois (WCAG 2.2, critério 1.4.11).
SérieCorNo fundo claroNo fundo escuroSituação
E-mail#185c966,98:12,68:1Reprovada no fundo escuro
WhatsApp#2e933c3,92:14,77:1Aprovada nos dois fundos
Anúncios#d1495b4,36:14,29:1Aprovada nos dois fundos
Orgânico#f2c14e1,68:111,16:1Reprovada no fundo claro
Indicação#8a5fbf4,70:13,99:1Aprovada nos dois fundos
Par de séries mais próximo em cada visão, medido em delta E OK; abaixo de 0,1 as cores se confundem.
VisãoPar mais próximoDelta E OKSituação
Visão comumE-mail e Indicação0,163Separa bem
DeuteranopiaWhatsApp e Anúncios0,028Abaixo de 0,1: confundem
ProtanopiaE-mail e Indicação0,078Abaixo de 0,1: confundem
TritanopiaWhatsApp e Indicação0,082Abaixo de 0,1: confundem

Exceção do critério 1.4.11: uma série reprovada contra o fundo fica dispensada de 3:1 quando o nome e o valor estão escritos no próprio gráfico ou numa tabela equivalente, como na prévia abaixo. O rótulo escrito continua precisando de 4,5:1, e partes vizinhas, como fatias e segmentos empilhados, precisam de 3:1 entre si ou de um separador na cor do fundo.

Leve a conta para o seu código

As duas medidas cabem em poucas linhas e não pedem biblioteca. O trecho abaixo recebe cores já validadas em RGB linear, de zero a um; a conversão completa, com a simulação de daltonismo, está no arquivo da oficina, que você pode abrir pelo código-fonte desta página.

const lum = ([r, g, b]) => 0.2126 * r + 0.7152 * g + 0.0722 * b;
const contraste = (a, b) => {
  const [claro, escuro] = [lum(a), lum(b)].sort((x, y) => y - x);
  return (claro + 0.05) / (escuro + 0.05); // aprova marca com 3 ou mais
};
function oklab([r, g, b]) {
  const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
  const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
  const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
  return [0.2104542553 * l + 0.7936177850 * m - 0.0040720468 * s,
          1.9779984951 * l - 2.4285922050 * m + 0.4505937099 * s,
          0.0259040371 * l + 0.7827717662 * m - 0.8086757660 * s];
}
const deltaEOK = (a, b) => Math.hypot(...oklab(a).map((v, i) => v - oklab(b)[i]));

Fontes consultadas em 06/10/2026: WCAG 2.2, critérios 1.4.1 e 1.4.11; CSS Color Module Level 4, OKLab, OKLCH e mapeamento de gama; Björn Ottosson, "A perceptual color space for image processing", 2020; Machado, Oliveira e Fernandes, "A Physiologically-based Model for Simulation of Color Vision Deficiency", IEEE TVCG, 2009; Brettel, Viénot e Mollon, "Computerized simulation of color appearance for dichromats", Journal of the Optical Society of America A, 1997, com os parâmetros do libDaltonLens e a comparação do DaltonLens (consulta em 08/10/2026).

Registro de mudanças desta página

Este guia é revisado quando a evidência muda, e cada revisão registra a data, o que mudou e por quê, como fazem os guias vivos do UK Analysis Function, do USWDS e da Data Visualization Society. As gravações de vídeo e podcast continuam com a data de 02/09/2026 e não são regravadas a cada revisão; as divergências ficam na errata das gravações.

Revisões do guia de gráficos, da mais recente para a mais antiga
DataO que mudouPor quê
Seções novas sobre título, eixo e escala, números, datas e estados, celular e toque; acessibilidade além do contraste ampliada; leitura de gráficos por IA com números publicados; prompt de resumo verificável; descrição textual nas figuras do catálogo; errata das gravações; legendas do catálogo sem referência a cor; datas das versões do ECharts corrigidas.Pesquisa de 08/10/2026 com fontes primárias de percepção, acessibilidade, design systems, leitura por IA e ECharts 6. A data de 25/05/2026 atribuída ao ECharts 6.1 não se confirmou, e os recursos citados com ela eram da versão 6.0.
Oficinas de dados conferíveis, séries densas e paleta de séries.Exercícios executáveis para validar entrada, medir renderização e testar cores.
Revisão em cinco ondas: fontes, proporções e medianas dos exemplos, layout responsivo, busca no catálogo, cópia e impressão.Auditoria de fidelidade das fontes e da geometria das quarenta figuras.
Publicação do guia, com aula em vídeo e podcast.Primeira versão do menu de execução visual.

Perguntas frequentes

Qual biblioteca de gráficos escolher primeiro?

Para painéis operacionais com filtros e atualização frequente, avalie o Apache ECharts. Para figuras editoriais em SVG, compare Observable Plot e visx conforme a stack. O uPlot prioriza séries temporais em canvas e informa cerca de 50 kB minificados no README consultado em 10/09/2026; meça o desempenho com a carga real. Use uma biblioteca principal por projeto e confira a licença da versão adotada.

Quando usar SVG e quando usar canvas num gráfico?

SVG facilita estilos por CSS, ampliação e marcação semântica de cada elemento. Canvas pode ser adequado a séries densas, mas o bitmap precisa de alternativa textual e dados acessíveis em HTML. Nenhum formato garante acessibilidade ou desempenho sozinho: teste o volume real, o teclado e o leitor de tela antes de escolher.

Por que bullet chart no lugar de velocímetro?

O bullet chart proposto por Stephen Few reúne realizado, meta e faixas de referência em uma escala compacta, permitindo comparar vários indicadores. Para leituras precisas, a posição em escala comum oferece vantagem sobre o ângulo, conforme os experimentos de Cleveland e McGill publicados em 1984. A escolha deve conservar a comparação de que o leitor precisa.

O que a WCAG 2.2 exige de um gráfico?

A WCAG 2.2 exige contraste de 4,5:1 para texto comum, ou 3:1 para texto grande nas condições do critério 1.4.3; o critério 1.4.11 prevê 3:1 para elementos gráficos necessários à compreensão. Pelo critério 1.4.1, a cor precisa ser acompanhada de outro sinal, como rótulo ou marcador. Confira os dois temas, o teclado e a alternativa textual.

Como publicar um gráfico gerado por IA sem publicar um número errado?

Valide a especificação e confira os dados contra a origem antes de renderizar. Modelos podem criar valores plausíveis que não existem na base. Exiba fonte e data, preserve lacunas, confira cálculos e filtros e recuse qualquer número sem origem identificada. Uma especificação declarativa ajuda a inspeção, mas não substitui a conferência dos valores.

Quando o painel precisa de tabela em vez de gráfico?

Use tabela quando o leitor precisar conferir valores exatos, como realizado, meta e período anterior. Alinhe os números com algarismos tabulares e explicite a unidade. Use gráficos para revelar padrões, como tendência, sazonalidade e concentração; a tabela pode permanecer ao lado como alternativa de consulta.

Como mostrar no gráfico um dado atrasado ou parcial?

Mostre a série com um aviso e as duas datas: quando a rotina rodou e de quando é o dado mais recente, comparadas com o prazo que a fonte costuma cumprir. Período ainda aberto entra marcado como parcial, com traço ou rótulo próprio, e nunca é comparado direto com um período fechado. Dado indisponível fica como lacuna visível, sem interpolar os vizinhos e sem virar zero.

O título do gráfico deve dizer a conclusão?

Em gráfico de decisão, sim: o título afirma a conclusão e o subtítulo traz métrica, recorte e período. A conclusão precisa coincidir com o traço mais saliente do desenho, porque o leitor segue o gráfico quando texto e destaque divergem. Em painel que atualiza sozinho, a manchete é calculada a partir do dado. Teste perguntando a quem não fez o gráfico o que ele conclui.

Por onde começar

Aplique o prompt de auditoria ao painel usado na reunião: escreva a decisão de cada gráfico, reorganize os indicadores por prioridade e substitua a forma quando ela esconder a comparação. Preserve as informações necessárias para investigar o resultado. O critério de pronto é conseguir conferir os dados, navegar por teclado e ler o gráfico nos dois temas. As próximas consultas estão nos guias de ícones, ilustrações, animação e geração de imagens, menus, abas e paginação, React: componentes e estado, diagramas de arquitetura e fluxo e Tailwind, tokens e CSS moderno, além do glossário.