Frontends com Vibecoding · Capítulo 17 de 35 · 62 min
Projetar gráficos e painéis pela decisão
O gráfico passa a ser escolhido pela pergunta que responde e a técnica de desenho pelo volume de pontos, com fonte e dono do número a dois cliques.
Este capítulo faz parte do curso gratuito Frontends com Vibecoding.
O velocímetro gasta um quarto da tela para mostrar um único número, porque obriga o olho a estimar ângulo em vez de comparar altura. O bullet chart, uma barrinha deitada com um traço marcando a meta, faz a mesma leitura numa linha fina e vence em qualquer painel de decisão.
Painel é a tela que reúne os números que mandam no seu mês, cada um respondendo a uma pergunta. Cabe muita coisa na mesma tela quando a ordem guia o olho, e o guia do painel grande, no fim deste capítulo, mostra como em nove passos. A pergunta de quem lê escolhe o gráfico, e o volume de pontos escolhe a técnica de desenho. A biblioteca entra por último, nunca por moda do agente (o assistente de IA que escreve código a partir do pedido).
Ao terminar, você sabe olhar um gráfico do relatório da empresa e dizer que pergunta ele responde, se o eixo engana e quem responde pelo número. Tempo de leitura: cerca de 62 minutos, e a auditoria de um gráfico do seu último relatório, mais 15.
A percepção decide a forma. Cleveland e McGill mediram que o olho compara posição e comprimento com muito mais precisão do que ângulo e área. É por isso que a barra vence a pizza.
Tufte acrescenta a razão dado-tinta: todo traço que não carrega dado é tinta a apagar, e o 3D decorativo é o caso mais caro. Wilkinson descreve qualquer gráfico como dado, marca e escala, sendo a escala a régua do eixo, aquela borda numerada onde o valor é lido.
Daí saem duas exigências para cada peça do painel: uma pergunta por gráfico e o denominador, o número pelo qual você dividiu, escrito à vista de quem lê.
Ver como texto
Três painéis com os mesmos três valores próximos. No primeiro, três barras verticais: a diferença de comprimento se compara de relance. No segundo, uma pizza com três fatias: o olho precisa estimar ângulo e hesita. No terceiro, três círculos com área proporcional: o olho precisa estimar área e também hesita. Cenário ilustrativo.
Esses arranjos não são gosto de quem desenha. O estudo Dashboard Design Patterns, de Bach e outros, catalogou 144 painéis reais e encontrou 42 arranjos que se repetem. O problema, portanto, é o mesmo em quase toda empresa.
O painel evolui junto com o problema que ele mede, e a primeira entrega quase nunca é a definitiva. Por isso reserve orçamento para uma segunda rodada, depois que alguém tiver usado o painel para decidir alguma coisa.
Quatro trocas resolvem a maior parte dos pedidos, e cada uma responde melhor a uma pergunta. O bullet chart substitui o velocímetro quando a pergunta é se estamos na meta. O waterfall, a escadinha que mostra o que somou e o que subtraiu, explica a variação da margem degrau a degrau.
Small multiples são a mesma miniatura repetida para cada unidade ou cada mês, lado a lado. Eles substituem o gráfico único com dez linhas embaralhadas, porque o olho compara desenhos vizinhos sem esforço. O slopegraph liga dois períodos por uma reta e mostra quem subiu e quem caiu.
Escreva o período e o denominador dentro do próprio gráfico. Um crescimento de 40% sem base nem período é desenho bonito sem informação, porque quem lê fica sem saber se aquilo é muito ou pouco.
Numa rede de academias, a pizza de matrículas por unidade virou barra ordenada e o velocímetro de meta virou um bullet chart por unidade. O gerente vê em três segundos quem está atrás da meta, e a evasão aparece como cancelamentos divididos pelos ativos do início do mês.
Ver como texto
Comparação entre velocímetro e bullet chart para a mesma medida de 82 por cento
O volume de pontos decide a técnica de desenho. SVG guarda cada barra como um objeto da própria página. Isso facilita estilo, interação e leitura por quem usa tecnologia assistiva, desde que haja título e descrição.
Canvas desenha pixels soltos, como tinta numa folha, e o navegador deixa de saber o que é cada mancha. Em troca ele aguenta muito mais pontos. Por isso é a escolha de uma série densa, ou seja, uma sequência longa de valores ao longo do tempo.
O preço do canvas é a acessibilidade, que passa a depender de uma tabela equivalente ao lado. Compare uma amostra real nos dois formatos e meça o tempo de desenho no aparelho mais fraco do seu público.
A regra para painel de operação cabe numa frase: tente o ECharts 6.1 antes de inventar moda. Ele aguenta milhões de pontos porque desenha aos poucos, em vez de travar a tela até terminar tudo.
Em projeto React, a base mais usada para montar a tela em pedaços reaproveitáveis, o Recharts já liga a camada de acessibilidade sozinho. O MUI X Charts vence quando o projeto inteiro já roda MUI, e o Highcharts é a escolha corporativa, porque traz acessibilidade e leitura sonora no pacote.
O D3 serve à peça única, com anotação escrita à mão, e nunca a 30 gráficos comuns em cinco dias. O guia de gráficos do hub de design fixa esse padrão para todo painel do projeto, e nenhum painel novo nasce com uma biblioteca diferente da anterior.
| Pergunta de quem lê | Gráfico que responde | Biblioteca ou técnica |
|---|---|---|
| Estamos na meta? | Bullet chart | HTML e CSS puro ou SVG à mão |
| O que explica a variação da margem? | Waterfall | HTML e CSS no board; ECharts 6.1 na investigação |
| Como cada unidade evoluiu no ano? | Small multiples | Observable Plot ou Vega-Lite 6.4 |
| Quem subiu e quem caiu entre dois períodos? | Slopegraph | Observable Plot; D3 se a peça leva anotação |
| Como os valores se distribuem? | Beeswarm ou histograma | ECharts 6.1 |
| Realizado, plano e projeção lado a lado? | Tabela de variância | Tabela HTML com algarismos tabulares e folha de impressão |
| Barras num app React? | Barras | Recharts v3; MUI X Charts v9 quando já roda MUI |
| Dezenas de milhares de pontos ao vivo? | Linha em canvas | uPlot (cerca de 40 kB) ou ECharts 6.1 |
| Como o preço andou tick a tick? | Candlestick | Lightweight Charts (35 kB) |
| Uma história anotada para o investidor? | Gráfico anotado | D3 |
Painel corporativo com exigência de acessibilidade e sonificação: Highcharts 12.5. Investigação com anotação e filtro cruzado: ApexCharts 7.1.
Um cartão de indicador dispensa gráfico e ainda assim exige uma escolha de biblioteca. Número que carrega uma vez e fica parado sai em HTML e CSS puro. Número que muda várias vezes na sessão, como o faturamento do dia, ganha com a animação dos dígitos. A direção da rolagem conta a tendência antes de a pessoa ler o valor.
O laboratório abaixo monta três indicadores com o number-flow, um pacote pequeno que anima a troca de dígitos e formata em pt-BR. Pause a atualização, compare com a versão em texto puro ao lado e observe o separador de milhar e a vírgula dos centavos. A regra: número parado fica em CSS, número ao vivo ganha a animação.
Antes do próximo pedido de painel ao agente, escreva a pergunta que cada peça responde. Troque pizza, velocímetro e 3D por barra, bullet chart e waterfall. Escolha a biblioteca pela tabela de comparação. Deu certo quando qualquer pessoa lê o gráfico e diz o período, o denominador e a decisão sem perguntar nada.
Montar o painel mensal e instalar a biblioteca de gráficos certa
Escolhido o gráfico pela pergunta e a técnica pelo volume, o board mensal pode ser montado em HTML e CSS, com fonte e dono a dois cliques.
O painel mensal do conselho sai em HTML e CSS puro, a dupla que desenha qualquer página, com a fonte e o dono ao lado de cada número. A biblioteca de gráfico entra depois, só na tela de investigação, onde alguém filtra e cruza dados até achar a causa.
Painel de diretoria e painel de operação respondem a públicos diferentes, e confundir os dois é o erro mais caro. O board, o grupo que aprova o mês, quer saber o que aconteceu, o que está em risco e o que fazer. Quem opera quer filtrar, cruzar e descer ao detalhe.
A regra dos dois cliques separa o painel pronto do rascunho. Se o conselheiro não descobre em dois cliques de onde veio o número, o que ele significa e quem responde por ele, a peça volta para a mesa.

Ver como texto
À esquerda, um conselho reunido em volta de uma folha impressa com três barras simples; à direita, uma analista diante de dois monitores com gráficos densos e filtros abertos.
Quatro peças cobrem quase todo painel mensal, e cada uma responde a uma pergunta. O cartão de indicador dá o nível, o bullet compara realizado com meta e o waterfall explica a variação degrau a degrau. A tabela de variância fecha a conta, com números alinhados e folha de impressão que sai certa.
Dê nome de componente (o bloco de código pronto que se encaixa na tela) a cada peça no pedido ao agente. O vocabulário executivo tem nove nomes: kpi-card, variance-table, waterfall-bridge, executive-callout, risk-matrix, marketing-funnel, decision-card, confidence-badge e methodology-note. Como cada nome tem um trabalho só, o agente para de inventar gráfico onde cabia um cartão.
Para o conselho, o HTML e o CSS puro costumam vencer o gráfico cheio de interação. A página carrega leve, imprime certo e dispensa biblioteca inteira só para mostrar um número e uma seta.
Laboratório ao vivo: kit de board em HTML e CSS
Cenário ilustrativo, números fictícios.
Receita do mês
R$ 812 mil
+6,4% contra o plano
Confiança: alta, dado fechado no ERP
fonte, definição, atualização, dono
Fonte: ERP, tabela de faturamento.
Definição: receita de ordens fechadas.
Atualização: diária, às 6h.
Dono: gerência financeira.
Suporte: onde a contagem animada não roda, o valor final aparece direto.
Realizado contra meta
Ordens fechadas412 de 400
Ticket médio1.971 de 1.908
Retrabalho3,1% de 4,0%
Suporte: barra e traço de meta são caixas comuns, e aparecem em qualquer navegador.
Ponte da margem, do plano ao realizado
Suporte: a ponte sai de cálculo em CSS; em tela estreita ela rola na horizontal.
Tabela de variância
Passe o mouse ou o foco numa linha para destacar o degrau da ponte.
| Indicador | Realizado | Plano | Desvio |
|---|---|---|---|
| Receita | 812 mil | 763 mil | +6,4% |
| Ordens | 412 | 400 | +3,0% |
| Ticket | 1.971 | 1.908 | +3,3% |
| Retrabalho | 3,1% | 4,0% | -0,9 p.p. |
Suporte: sem :has(), a tabela segue completa e só o destaque no degrau não aparece.
Na tela de investigação em React, a base mais usada para montar a tela em pedaços reaproveitáveis, o Recharts é o ponto de partida. Ele desenha em SVG e monta o gráfico encaixando peças prontas de barra, linha e eixo.
A instalação leva cinco passos: instalar o pacote, importar as barras e os eixos, e envolver o gráfico num contêiner que ajusta a largura sozinho. Depois passe a cor da marca pelo token, o valor de cor guardado com nome, como a etiqueta na lata de tinta. A camada de acessibilidade já vem ligada.
O erro mais comum é colocar esse contêiner dentro de uma divisão sem altura: ele tenta ocupar cem por cento de zero e nada aparece. Declare a altura em pixels. O segundo erro é o cinza de fábrica nos rótulos do eixo, a borda numerada onde o valor é lido, que reprova no teste de contraste.
Todo gráfico que sustenta decisão ganha a tabela equivalente, escondida da tela e presente para o leitor de tela, o programa que lê a página em voz alta. Nunca esconda com display:none, porque isso apaga o dado para todo mundo.
O Chartability é a auditoria que cobra isso peça por peça. A leitura sonora que o Highcharts traz entra como canal extra, para quem prefere ouvir a diferença.
Canvas e WebGL desenham pixels e devolvem nada ao leitor de tela. Por isso toda peça desenhada assim precisa, em paralelo, de uma camada com ARIA, as etiquetas invisíveis que descrevem o gráfico em palavras.
Ver como texto
O padrão gráfico mais tabela: o gráfico visual serve a quem enxerga e a tabela equivalente, escondida com a classe sr-only mas presente na árvore de acessibilidade, entrega os números ao leitor de tela
A biblioteca entra quando a pessoa precisa investigar, e não apenas olhar. O ApexCharts 7.1 virou essa superfície. Ele deixa anotar o gráfico, medir distâncias, filtrar um gráfico pelo clique em outro e mandar a visão inteira por um link.
Use o ApexCharts quando o painel precisa dessa interação e você não quer trocar de biblioteca. Painel de operação com muito volume pede ECharts, e série financeira pede o Lightweight Charts, como a aula anterior mostrou.
O laboratório abaixo mostra o que essa escolha muda. Ele importa o ECharts por módulos, só linha, barra, dispersão, eixos, legenda e zoom, para o pacote não carregar o que o painel não usa. Troque o tipo de gráfico e suba o volume para 200 mil pontos: o mostrador de tempo diz quanto o desenho custou no seu aparelho.
Dois detalhes decidem. Na dispersão com 200 mil pontos, a tela recebe os primeiros pontos antes de o desenho terminar: é a renderização progressiva, que o Recharts não tem. O botão de eixo em zero mostra, com os mesmos dados, como o eixo cortado infla a diferença entre duas lojas. Abaixo desse volume, o Recharts continua a escolha mais simples.
A fórmula de cada indicador vive em código versionado, numa camada semântica (o arquivo único onde a conta mora, como a receita anotada na cozinha). Assim nenhuma tela calcula receita recorrente, custo de aquisição ou retorno de mídia por conta própria.
Cube e dbt integraram as duas plataformas em julho de 2026, e o modelo do dbt passou a valer como fonte única dessas contas. O motivo é a IA: o agente acerta quando lê a fórmula pronta e erra quando traduz a pergunta direto em consulta ao banco.
Quem dispensa a plataforma inteira tem o Boring Semantic Layer, uma camada leve com a mesma ideia e bem menos peça para manter.
Num escritório de contabilidade, a definição de margem passou a viver num arquivo só, lido por todas as telas. Duas empresas atendidas deixaram de receber a mesma conta feita de dois jeitos.
Antes de fechar o próximo painel mensal, nomeie cada peça como componente no pedido ao agente. Exija fonte, definição, data e responsável dentro do próprio cartão, abertos em um clique. Tire a fórmula dos indicadores das telas e faça todas lerem o mesmo arquivo. Deu certo quando dois relatórios diferentes mostram o mesmo número.
Guia prático: número animado só quando é real, com a origem anotada
Número que sobe na tela chama atenção, e é por isso que ele precisa ser verdadeiro. Nos 51 templates medidos em 07/10/2026, sinais de contador animado aparecem em 28. Nos de advocacia e clínica, os números do topo, como anos de atuação, casos conduzidos e taxa de êxito, são exemplos do template: animam bonito e não pertencem a ninguém.
O curso de edição estudado no mesmo dia tem duas regras que valem para painel e página. A primeira: nada na tela que a pessoa não disse ou não aprovou, e o contador para exatamente no número dito. A segunda: dado de terceiros entra real. No estudo, as estrelas de um repositório citado foram consultadas pela API do GitHub no dia da edição, e o número animado foi o daquele dia, com a origem registrada no arquivo de entrega.
O contador também precisa ser determinístico. O material evita o contador que recalcula a cada quadro e usa valores liberados em tempos fixos. Na página, isso quer dizer: o número final já escrito no HTML, duração fixa, nenhum valor aleatório e, com movimento reduzido ligado, o número final direto. O template de painel contábil mostra o outro lado da mesma regra: sem dados, os cartões exibem 0 ou um traço, com uma dica de como começar, em vez de número de exemplo.
// Contador determinístico: o valor final já está no HTML e a origem vai junto.
// <span class="contador" data-final="1284" data-origem="API do GitHub, 07/10/2026">1.284</span>
const fmt = new Intl.NumberFormat("pt-BR");
const reduzir = matchMedia("(prefers-reduced-motion: reduce)").matches;
for (const el of document.querySelectorAll<HTMLElement>(".contador")) {
const final = Number(el.dataset.final);
el.title = `Fonte: ${el.dataset.origem}`;
if (reduzir || !Number.isFinite(final)) continue; // fica o número final escrito
const obs = new IntersectionObserver(([e]) => {
if (!e.isIntersecting) return;
obs.disconnect();
const inicio = performance.now();
const DURACAO = 1200; // fixa
const passo = (agora: number) => {
const p = Math.min((agora - inicio) / DURACAO, 1);
el.textContent = fmt.format(Math.round(final * (1 - (1 - p) ** 3)));
if (p < 1) requestAnimationFrame(passo);
else el.textContent = fmt.format(final); // termina exatamente no valor aprovado
};
requestAnimationFrame(passo);
}, { threshold: 0.6 });
obs.observe(el);
}Do número de exemplo ao número com dono
Cinco passos antes de deixar qualquer número subir na tela.
Passo 1: Liste todo número que aparece na página ou no painel
Peça ao agente a lista de cada número visível, com o arquivo onde está e de onde ele veio. Número sem origem conhecida é número de exemplo até prova em contrário.
Deu certo quando: Cada número tem uma linha com valor, lugar e origem.
Erro comum: Deixar a taxa de êxito que veio no template porque parece plausível.
Passo 2: Consulte o dado de terceiros na fonte, no dia
Estrelas de repositório, avaliação de loja, número de alunos: consulte a fonte oficial na data da publicação, por API quando houver, e anote valor e data.
Deu certo quando: O número publicado bate com a fonte na data anotada.
Erro comum: Copiar o número de uma reportagem antiga e animá-lo como se fosse de hoje.
Passo 3: Escreva o valor final no HTML
O contador parte de um número que já está na página, como no bloco acima. Sem JavaScript, para buscador e com movimento reduzido, aparece o valor certo.
Deu certo quando: Com o JavaScript desligado, a página mostra o número final.
Erro comum: Começar o HTML em 0 e depender da animação para mostrar o valor real.
Passo 4: Deixe a origem a um toque
Fonte e data ficam junto do número: no atributo, num rodapé do cartão ou numa nota. Num painel, o responsável pelo dado também.
Deu certo quando: Quem lê descobre de onde veio o número sem perguntar a ninguém.
Erro comum: Guardar a origem só na conversa com o agente.
Passo 5: Desenhe o estado sem dado
No painel, cartão sem dado mostra traço ou zero com uma dica do que fazer, como o template contábil faz. Nunca preencha com número de exemplo para a tela parecer cheia.
Deu certo quando: O painel vazio orienta o próximo passo e não mostra número inventado.
Erro comum: Publicar a demonstração com dados fictícios que o cliente toma por reais.
No fim você tem: Números animados que terminam no valor aprovado, aparecem certos sem JavaScript e levam fonte e data junto.
Coordenadora de marketing de uma escola de programação online que refaz a faixa de números da página de vendas
Educação online, matrícula
Dor
A faixa exibia alunos formados, nota média e estrelas do repositório aberto da escola, todos animados. Ninguém sabia de quando eram os números, e um deles vinha de uma apresentação de dois anos antes.
Solução
Ela listou os números com o agente, consultou alunos e nota no sistema da escola e as estrelas na API do GitHub no dia, gravou valor e data em cada contador e tirou o número que não tinha fonte.
Resultado do exemplo
A faixa ficou com três números conferidos e datados, e a atualização passou a ser uma tarefa mensal com a fonte de cada um.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Guia prático: a cor do gráfico medida nos dois temas e lida do CSS
A aula escolheu o gráfico pela pergunta e a biblioteca pelo volume. Este guia cuida da cor: a barra precisa de contraste contra o fundo nos temas claro e escuro, as séries precisam continuar distintas para quem tem daltonismo, e o componente não pode guardar hexadecimal próprio. Você sai medindo a paleta antes de aprovar e ligando a descrição e a textura do ECharts.
Funções, casos de uso e aplicações
Funções
| Função ou recurso | O que faz | Quando usar | Referência |
|---|---|---|---|
| Contraste de 3:1 do desenho | Barra, linha e fatia precisam de 3:1 contra a cor vizinha | Todo gráfico que sustenta decisão; se rótulo e valor já dizem tudo, a fatia fica isenta | W3C, WCAG 2.2, critério 1.4.11 |
| aria do ECharts (show e enabled) | Gera uma descrição a partir de título, tipo e dados e põe no aria-label do contêiner | Gráfico com poucos itens; com muitos, escreva a sua em aria.description | Apache ECharts, manual de acessibilidade |
| aria.decal do ECharts | Aplica textura (listras, pontos) sobre cada série | Quando a cor sozinha não separa as séries: impressão em preto e branco, daltonismo | Apache ECharts, manual de acessibilidade |
| Cor lida do token com getComputedStyle | O gráfico pede a cor à variável CSS (o token) em vez de guardar hexadecimal | Painel com tema claro e escuro; refaça a opção do gráfico quando o tema muda | Portal, src/components/admin/charts/EChart.tsx |
| Simulação de daltonismo por pares | Mede a distância entre cada par de cores sob deuteranopia, protanopia e tritanopia | Antes de aprovar a paleta categórica | Portal, src/lib/admin/chart/chart-tokens.ts |
| animation desligada com movimento reduzido | Desenha o gráfico parado para quem pediu menos movimento ao sistema | Todo gráfico animado | Portal, src/components/admin/charts/EChart.tsx |
Cor nunca carrega a informação sozinha: rótulo na ponta e marcador continuam obrigatórios.
Casos de uso
Coordenadora de marketing de uma faculdade a distância em Belo Horizonte
Educação
Dor
No painel de matrículas por canal, as linhas de Google e Meta, azul e violeta, viravam a mesma cor para um diretor com daltonismo, e no tema escuro o cinza da grade sumia.
Solução
Pediu ao agente a paleta como tokens com valor para os dois temas, um teste que mede contraste de 3:1 contra os dois fundos e a distância entre pares sob três tipos de daltonismo, e rótulo na ponta de cada linha.
Resultado do exemplo
O que observar: o teste passa nos dois temas e o diretor lê o canal certo sem legenda na próxima reunião mensal.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Gestor de tráfego de uma agência em Porto Alegre que entrega relatório mensal em PDF
Marketing digital
Dor
O cliente imprime o relatório em preto e branco, e as quatro séries de investimento por campanha ficam iguais no papel.
Solução
Ligou aria.decal no ECharts, que põe textura diferente em cada série, e manteve a tabela de valores logo abaixo do gráfico.
Resultado do exemplo
O que observar: na impressão de teste, cada série se distingue pela textura antes de o cliente pedir a versão colorida.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Na prática
No /admin deste portal, a paleta de gráficos vive como variáveis --adm-chart-1 a --adm-chart-8 em src/app/admin/admin-tokens.css. O espelho medido dela fica em src/lib/admin/chart/chart-tokens.ts, e um teste compara os dois valor a valor. O registro conta por que a paleta mudou em 06/10/2026: passava no contraste, mas azul e violeta colapsavam sob deuteranopia, porque a matiz some e sobra a luminosidade. A correção espalhou a clareza entre as séries. O invólucro do ECharts lê a cor do token e liga a descrição e o movimento reduzido.
export function opcoesBase(tema: EChartTema, reduzirMovimento: boolean): EChartOption {
return {
color: tema.categorias,
backgroundColor: "transparent",
// descrição gerada pelo ECharts no próprio SVG; a
// tabela irmã da moldura continua sendo a leitura completa.
aria: { enabled: true },
animation: !reduzirMovimento,
animationDuration: 420,
textStyle: { fontFamily: tema.fonte, fontSize: tema.fontePx, color: tema.rotulo },
// ...
};
}// contraste.ts — rode com: npx tsx contraste.ts
// Razão de contraste da WCAG entre duas cores em hexadecimal.
function luminancia(hex: string): number {
const [r, g, b] = [1, 3, 5].map((i) => {
const c = parseInt(hex.slice(i, i + 2), 16) / 255;
return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
});
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
}
function razao(a: string, b: string): number {
const [l1, l2] = [luminancia(a), luminancia(b)].sort((x, y) => y - x);
return (l1 + 0.05) / (l2 + 0.05);
}
const fundos = { claro: "#ffffff", escuro: "#111827" };
const paleta = ["#2563eb", "#7c3aed", "#059669", "#d97706"]; // troque pela sua
for (const cor of paleta) {
for (const [tema, fundo] of Object.entries(fundos)) {
const r = razao(cor, fundo);
// Desenho (barra, linha) pede 3:1; texto pede 4,5:1
console.log(cor, tema, r.toFixed(2), r >= 3 ? "ok" : "REPROVA");
}
}Da paleta bonita à paleta que todo mundo lê
Passo 1: Hexadecimal fora dos componentes
Procure por # nos arquivos de gráfico. Cada cor encontrada vira token com nome de papel: série, meta, melhora, piora, sem dado.
Deu certo quando: A busca por hexadecimal nos componentes de gráfico volta vazia.
Passo 2: Meça cada cor contra os dois fundos
Rode o script de contraste. Desenho pede 3:1; rótulo e eixo, 4,5:1.
Erro comum: Medir só no tema claro e descobrir o escuro na reunião.
Passo 3: Simule daltonismo nos pares
Use o simulador de visão do DevTools do Chrome, na aba Rendering, e olhe os pares vizinhos. Se dois se confundem, mude a clareza de um deles além da matiz.
Passo 4: Ligue descrição e textura
aria.enabled com aria.description em português e aria.decal.show para a versão impressa.
Deu certo quando: O leitor de tela anuncia o gráfico em português, e a impressão em preto e branco separa as séries.
Passo 5: Teste de contraste na esteira
O teste de contraste roda a cada proposta e reprova a cor que cair abaixo do piso.
No fim você tem: A paleta passa nos dois temas e sob daltonismo, e a troca de cor acontece num arquivo só.
Armadilhas
Contraste bom não garante séries distintas
Meça contraste contra o fundo e distância entre os pares, nos dois temas.
- Clareza igual com matiz diferente colapsa sob deuteranopia
- Grade e eixo podem ficar abaixo de 3:1; a série, não
- Descrição automática do ECharts sai em inglês se você não escrever a sua
- Textura ajuda no papel, mas o rótulo na ponta continua
- Hexadecimal no componente ignora a troca de tema
O teste: Imprima o painel em preto e branco: cada série ainda se distingue?
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
O gráfico começa pela pergunta, não pela biblioteca
O ECharts, biblioteca aberta da Apache usada nos painéis deste portal, traz dezenas de tipos de gráfico prontos. A galeria impressiona, e é por isso que o critério precisa vir antes: qual decisão o gráfico apoia. A página de acessibilidade da biblioteca mostra outro cuidado que fica com quem pede: a descrição para leitor de tela vem desligada.

Ver como texto
Página inicial do Apache ECharts com o título Apache ECharts, An Open Source JavaScript Visualization Library, os botões Get Started e Demo, um gráfico de setores colorido com botão de reproduzir e, no rodapé, o aviso Apache ECharts 6.1 is out! See changelog.

Ver como texto
Galeria de exemplos do Apache ECharts na categoria Line, com cartões como Basic Line Chart, Smoothed Line Chart, Basic area chart, Stacked Line Chart, Stacked Area Chart, Gradient Stacked Area Chart, Bump Chart e Temperature Change, e um menu lateral com Bar, Pie, Scatter, GEO/Map, Heatmap, Sankey e outros tipos.

Ver como texto
Página Web Accessibility do manual do Apache ECharts. O texto diz que a biblioteca gera uma descrição do gráfico a partir da configuração, para leitores de tela, e oferece padrões de textura para distinguir séries além da cor, e avisa que essa função vem desligada e se liga com aria.show igual a true.
| Pergunta do negócio | Gráfico que responde | Cuidado |
|---|---|---|
| Como a receita evoluiu no ano? | Linha | Marcar meses sem dado como lacuna, não como zero |
| Qual canal trouxe mais clientes? | Barras horizontais ordenadas | Eixo começando no zero |
| Batemos a meta? | Barra com marca de meta (bullet) | Mostrar a meta e a fonte do número |
| Como se divide o orçamento? | Barras empilhadas a 100% | Pizza só com até quatro fatias |
Faça agora: audite um gráfico do último relatório
Passo 1: Escolha um gráfico do relatório mensal da sua área.
Deu certo quando: Um gráfico aberto na tela ou impresso.
Passo 2: Escreva a pergunta que ele responde, em uma frase.
Deu certo quando: A frase termina em ponto de interrogação e cita um número do negócio.
Erro comum: Descrever o gráfico ("mostra as vendas") em vez da pergunta.
Passo 3: Confira se o eixo das barras começa no zero.
Deu certo quando: Começa no zero, ou o corte está avisado no próprio gráfico.
Passo 4: Procure a fonte e o responsável pelo número.
Deu certo quando: Os dois estão no gráfico ou a um clique dele.
No fim você tem: Um gráfico auditado, com a pergunta escrita, o eixo conferido e o dono do número identificado.
Guia prático: monte um painel grande, com muitas visões e animado
Um painel pode reunir uma dúzia de gráficos na mesma tela e continuar fácil de ler. O que segura a leitura é a ordem: a decisão no topo, o tempo no meio, a comparação embaixo, cada coisa na sua faixa. Este guia vai do zero ao painel pronto em nove passos, e cada passo traz o pedido para colar no agente de código (Claude Code, Codex ou outro parecido) e o que conferir quando a resposta voltar.
O exemplo usa a Mirante, uma agência de marketing fictícia, com números inventados: leads por canal ao longo de 26 semanas. Troque pelos seus dados quando o painel estiver de pé. As regras completas estão nos guias de gráficos e de dashboards do portal Brasil GEO, com os links no rodapé do capítulo.
Ver como texto
As três faixas de um painel denso, de cima para baixo
O olho desce por três faixas nomeadas. A faixa um traz a decisão: manchete calculada, número principal com denominador e duas comparações. A faixa dois traz o tempo: visões empilhadas com a mesma data na mesma coluna, linha de leitura e zoom compartilhados. A faixa três traz a comparação: mapa de calor, cascata e múltiplos pequenos. Depois vem a tabela equivalente, com sparkline. Um clique em qualquer visão filtra todas.
Passo 1: escreva a pergunta e a decisão
Antes de qualquer gráfico, escreva numa frase a pergunta que o painel responde e a decisão que ela alimenta. Na Mirante, a pergunta é se algum canal está puxando os leads para baixo a ponto de mudar a verba do mês. Toda visão que entrar depois precisa ajudar a responder isso.
A pergunta também define o denominador, o número pelo qual você divide para saber se o resultado é bom, como a meta do mês. Sem ele, 2.140 leads não dizem nada. Como o agente ainda não tem dado nenhum, peça junto um arquivo de dados de exemplo, marcado como fictício.
Confira no resultado
- A pergunta cabe numa frase e termina citando a decisão.
- Cada visão da lista tem a sua pergunta menor e o seu denominador.
- O arquivo de dados avisa no topo que os números são fictícios.
Passo 2: desenhe três faixas na tela grande
Painel com muita informação se lê de cima para baixo, em faixas com nome. A primeira traz a decisão: uma manchete, a frase calculada do próprio dado (por exemplo, qual canal puxa o volume e com quanto), o número principal em letra grande com o denominador ao lado e duas comparações, com o período anterior e com a meta. A segunda traz o tempo, e a terceira, a comparação entre canais. No fim, a tabela com os mesmos números.
Use a largura toda. Uma grade de 12 colunas (a tela dividida em 12 partes iguais, como as linhas de um caderno) deixa o gráfico principal ocupar oito partes e o ranking ao lado ocupar quatro. O gráfico de destaque ganha de 480 a 640 px de altura, o de apoio de 300 a 400 px e cada miniatura de 140 a 200 px. Cabem até 12 visões por tela; passou disso, abra outra página.
Confira no resultado
- A 1.280 px o painel ocupa a largura da janela, sem coluna estreita no meio.
- O número principal tem o denominador escrito ao lado, na mesma linha de leitura.
- A 390 px as faixas viram uma pilha e a manchete aparece primeiro.
Passo 3: escolha o tipo de cada visão
Cada visão responde a uma pergunta menor, e a pergunta escolhe o tipo. Evolução no tempo pede linha ou área. Ranking pede barra horizontal ordenada, do maior para o menor. O que somou e o que tirou entre dois períodos pede cascata (waterfall, a escadinha que sobe e desce degrau a degrau). Padrão por semana e por canal pede mapa de calor, a grade em que a cor mais forte mostra o valor maior. A mesma pergunta repetida para cada canal pede múltiplos pequenos, miniaturas iguais lado a lado na mesma escala.
Pizza, velocímetro e 3D continuam de fora pelo motivo que o começo do capítulo explicou: o olho compara posição e comprimento muito melhor do que ângulo e área.
Confira no resultado
- A tabela do roteiro tem uma linha por visão, com pergunta, tipo e motivo.
- Nenhuma visão usa pizza com muitas fatias, velocímetro ou 3D.
- Toda barra começa no zero.
Passo 4: some e empilhe sem enganar
Empilhar só vale para o que soma de verdade. Leads de seis canais somam o total de leads; a taxa de conversão de seis canais não soma nada, e a pilha desenharia um total que não existe. Para partes que somam, use área ou barra empilhada quando importa o total e barra a 100% quando importa a divisão.
Séries na mesma unidade que não somam ficam sobrepostas na mesma escala: o período anterior vira uma linha tracejada, o fantasma, a meta vira uma linha reta e a média móvel passa por cima. Unidades diferentes, como leads e custo por lead, nunca dividem o mesmo gráfico com dois eixos Y, porque quem desenha escolhe a escala de cada lado e cria cruzamentos que não existem. Empilhe as visões, uma acima da outra, com a mesma semana na mesma coluna: o olho desce e compara.
Ver como texto
Somar, sobrepor ou empilhar as visões
Escada de quatro perguntas para juntar informação num painel. Se a mesma pergunta se repete por canal, faça uma matriz de múltiplos pequenos. Se as partes somam um total de verdade, empilhe na mesma visão, em área ou barra, ou a 100% para ver a divisão. Se não somam, mas usam a mesma unidade, sobreponha na mesma escala. Se a unidade muda, nunca use dois eixos Y: empilhe uma visão acima da outra, com a mesma data na mesma coluna.
Confira no resultado
- Só leads aparecem empilhados; custo por lead está numa visão própria, logo abaixo.
- A linha tracejada do período anterior e a linha da meta usam a mesma escala da área.
- Passando o mouse numa semana, a dica mostra todos os canais, o total e a variação.
Passo 5: use cores prontas para os dois temas
Painel com seis ou oito séries precisa de cores que se distinguem no tema claro, no escuro e para quem tem daltonismo. A paleta abaixo foi medida em 05/11/2026 contra o branco do tema claro e o azul-escuro do tema escuro. Copie como está. A ordem é fixa e a cor segue o canal em todas as visões: se Busca é azul na área, é azul no ranking, na tabela e na miniatura.
Três regras completam a paleta. Verde e laranja ficam parecidos para quem tem daltonismo, então ponha o nome do canal na ponta da série e 2 px de separador entre fatias. Da nona série em diante, junte tudo em Outros. E status, como bom, atenção e crítico, leva ícone e palavra, nunca só cor.
/* Paleta categórica de 8 cores, ordem fixa, medida em 05/11/2026.
A cor segue a entidade: Busca é sempre --serie-1, em todas as visões. */
:root {
--superficie: #ffffff;
--serie-1: #0b63b5; /* azul */
--serie-2: #d55e00; /* laranja */
--serie-3: #0a8a62; /* verde */
--serie-4: #a64d9a; /* roxo */
--serie-5: #b07a00; /* mostarda */
--serie-6: #2b8ab3; /* azul-piscina */
--serie-7: #c2356e; /* framboesa */
--serie-8: #5d6bc4; /* anil */
}
[data-theme="dark"] {
--superficie: #182230;
--serie-1: #4a90d9;
--serie-2: #d66b2a;
--serie-3: #2c9f70;
--serie-4: #c46fb9;
--serie-5: #b8861f;
--serie-6: #3a9fc7;
--serie-7: #d9457a;
--serie-8: #7f78e8;
}Confira no resultado
- Nenhum componente de gráfico guarda hexadecimal: todos leem o token.
- Trocando o tema, as cores mudam na hora e continuam legíveis.
- O mesmo canal tem a mesma cor em todas as visões.
Passo 6: anime com função
No painel, movimento serve para mostrar o que mudou. Por isso ele aparece toda vez que o dado muda: ao entrar, ao filtrar, ao trocar de visão, ao contar o número novo e ao reproduzir o tempo. Fora desses momentos, nada gira nem pulsa. O capítulo de movimento ensina a guardar o efeito decorativo de uma página de venda para um único momento; no painel, o que manda é o dado.
Cada uso tem um tempo medido, e toda animação tem saída. Quem ligou reduzir movimento no sistema, ou no botão do curso, recebe o painel direto no estado final. Movimento automático que passa de 5 segundos, como a reprodução das semanas, ganha botão de pausa.
| Uso | Quando acontece | Tempo |
|---|---|---|
| Entrada em cadeia | O painel aparece pela primeira vez | 100 a 500 ms por visão, 60 a 90 ms entre elas, até 1.600 ms no total |
| Transição de dado | A pessoa filtra ou troca o período | 300 a 500 ms, cada barra seguindo o próprio canal |
| Troca de visão | Barra vira mapa de área no mesmo espaço | 400 a 700 ms |
| Destaque | O mouse ou o clique cai numa série | 150 a 250 ms |
| Contagem do número | O valor principal muda | 400 a 800 ms |
| Reprodução do tempo | A pessoa aperta reproduzir | Um passo a cada 400 a 1.000 ms, com pausa |
| Ao vivo | Chega um dado novo | Um pulso de até 300 ms no que mudou |
Com movimento reduzido, todos os usos entregam direto o estado final.
Confira no resultado
- A entrada termina em menos de dois segundos, mesmo com 12 visões.
- Ao filtrar, as áreas caminham para o valor novo em vez de sumir e reaparecer.
- Com movimento reduzido, a primeira imagem já é a final.
Passo 7: ligue as visões
Num painel com muitas visões, um clique precisa valer para todas. Isso se chama visões coordenadas: clicar em Social no ranking filtra a área, o mapa de calor, a cascata e as miniaturas ao mesmo tempo. Escreva a regra na tela, perto do botão Limpar, que fica sempre à vista: o filtro vale para todas as visões, um canal por vez.
No ECharts, a função echarts.connect liga as visões com o mesmo eixo de tempo: a linha de leitura, aquele traço que acompanha o mouse, aparece na mesma semana em todas, e o zoom anda junto. Para trocar uma visão por outra no mesmo espaço, como barra por mapa de área, o recurso universalTransition faz os mesmos canais mudarem de forma, e o movimento mostra que nada foi trocado de lugar.
Confira no resultado
- Um clique filtra todas as visões, e o título de cada uma diz o recorte.
- O botão Limpar aparece o tempo todo, e não só depois do filtro.
- Pela tabela e pelo teclado dá para filtrar sem mouse.
Passo 8: dê tela cheia ao painel
Painel denso ganha muito numa tela maior, como o monitor da reunião ou a televisão da equipe. O botão Tela cheia usa a Fullscreen API, o recurso do navegador que leva um pedaço da página a ocupar a tela inteira. No modo reunião a letra cresce, os botões somem e fica só o de sair. No iPhone, onde o recurso é limitado, o painel cobre a janela e sai com o mesmo botão.
Confira no resultado
- Em tela cheia a manchete e o número ficam legíveis do fundo da sala.
- Os gráficos redesenham no tamanho novo, sem rótulo cortado.
- O botão de sair aparece o tempo todo, e a tecla Esc também funciona.
Passo 9: revise no celular e com movimento reduzido
A revisão final acontece em três telas e dois temas. A 390 px, a largura de um celular comum, o painel vira uma pilha na ordem da decisão: manchete e número primeiro, depois as visões na ordem das faixas, e nada cortado sem caminho. Toda letra dentro dos gráficos fica com 12 px ou mais. Confira de novo com reduzir movimento ligado e no tema escuro, que tem cores próprias.
Peça ao agente as capturas e a lista de defeitos, e olhe as capturas você mesmo. É nelas que aparecem o rótulo espremido, a cor apagada no escuro e o gráfico que ficou em branco.
Confira no resultado
- Existem capturas a 390, 1.280 e 1.920 px nos dois temas.
- No celular não há rolagem para os lados e a primeira coisa na tela é a manchete.
- Cada gráfico tem a tabela equivalente, com os mesmos números.
O laboratório abaixo monta o painel da Mirante com os nove passos aplicados. Clique num canal em qualquer visão e veja todas obedecerem ao mesmo filtro. Suba a densidade de 6 para 12 visões, troque o tema, aperte reproduzir e ligue o movimento reduzido para comparar.
Com o painel de exemplo funcionando, troque os dados fictícios pelos seus e repita os nove pedidos na ordem, um por mensagem. Deu certo quando alguém abre o painel, lê a manchete, encontra o número com o denominador e diz qual canal pede atenção sem perguntar nada a você.
Aplicar os recursos ao projeto
Ver como texto
Categoria e tempo pedem leituras diferentes
Cenário ilustrativo com valores oitenta, noventa e cem. Barras com base zero comparam categorias. Uma linha apresenta a sequência desses valores em instantes sucessivos.
Ver como texto
À esquerda, a receita em JSON: mark line, x mês no tempo, y receita, facet filial e os registros em data.values. Uma seta leva a dois painéis pequenos, Filial A e Filial B, cada um com a linha de receita mensal. Embaixo, você declara e a biblioteca calcula, com o alerta de que mês sem registro some e finge queda.
Ver como texto
O desenho pode ter estruturas diferentes
SVG mantém formas como elementos. Canvas representa o resultado numa superfície de pixels. WebGL usa comandos gráficos e recursos da GPU. Nenhuma técnica dispensa descrição ou dados equivalentes.
Ver como texto
Gráfico de halteres com três fornecedores numa escala de 0 a 10 dias. Fornecedor A prometeu 5 dias e cumpriu 7. Fornecedor B prometeu 3 e cumpriu 3. Fornecedor C prometeu 4 e cumpriu 8. O círculo vazado marca o prometido, o cheio marca o cumprido, e a linha entre eles mostra o atraso. Cenário ilustrativo.
| Abordagem | Exemplos | Você decide |
|---|---|---|
| Configuração de gráfico | ECharts, Chart.js, Plotly | Métrica, interação e entrega |
| Gramática declarativa | Vega-Lite, Plot | Campos e representações |
| Componentes React | Recharts, Nivo | Composição da aplicação |
| Primitivas | D3, visx | Desenho e comportamento |
As famílias têm capacidades sobrepostas; a tabela organiza o nível de composição e não estabelece ranking de qualidade ou desempenho.
Ver como texto
Grade de quatro cartões, cada um com a pergunta, uma miniatura e o nome do gráfico. Estamos na meta: bullet chart, uma barra deitada com um traço na meta. O que somou e o que subtraiu: waterfall, degraus que sobem e descem. Como cada unidade se compara: small multiples, a mesma miniatura repetida. Quem subiu e quem caiu: slopegraph, retas ligando dois períodos.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code: do zero à prática
- JavaScript: o que muda na página quando você clicasugerido pelo grafoApresenta o conceito “JavaScript”, usado em “Projetar gráficos e painéis pela decisão”.
- O que aparece no HTML e o que surge depoissugerido pelo grafoApresenta o conceito “HTML”, usado em “Projetar gráficos e painéis pela decisão”.
- CursoSíntese e didática com IAsugerido pelo grafoDepois de escolher a informação essencial e desenhar hierarquia, gráficos e fluxos compreensíveis, o aluno pode aplicar esses critérios às interfaces do curso de frontend. A ponte conecta clareza da mensagem, acessibilidade e decisões de apresentação.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Astra profundoConstruir um painel que ajuda a escolher a próxima oficinaExaminar conexões de Construir um painel que ajuda a escolher a próxima oficina
- Dados com PythonGráfico enganoso e gráfico que leva à decisãoExaminar conexões de Gráfico enganoso e gráfico que leva à decisão
- SEO programáticoApêndice: medir velocidade e capacidade da plataformaExaminar conexões de Apêndice: medir velocidade e capacidade da plataforma
- Síntese e didática com IATabela, gráfico ou fluxograma: escolha pela relação a mostrarExaminar conexões de Tabela, gráfico ou fluxograma: escolha pela relação a mostrar
Terminou a leitura?
Você está aqui: capítulo 17 de 35
0 de 35 concluídos
- Próximo · Capítulo 18 de 35 · 18 minDimensionar tabelas e organizar o cálculo das métricasLer o capítulo 18 sem concluir
Marque como concluído para o capítulo contar no seu painel e no certificado.
- Anterior · Capítulo 16 de 35 · 32 minPublicar conteúdo encontrável em vários idiomasVoltar para o capítulo 16
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
Base UI
Prenda o foco num diálogo sem escrever o comportamento
Abra a janela Agendar visita, percorra os campos com Tab, feche com Esc e acompanhe no painel onde o foco está e para onde ele volta.
Pacote
Abrir no capítuloConstruir componentes, usar o registro e publicar o catálogo@base-ui/reactLucide e Iconify
Mantenha uma família de ícones coerente e nomeie cada botão
Mude tamanho, traço e cor da barra, veja o símbolo do Iconify acompanhar o Lucide e rode a auditoria de nomes acessíveis.
Pacote
Abrir no capítuloProjetar uma linguagem de ícones e ilustraçãolucide-react, @iconify/reactMotion
Testar os três sinais que autorizam o terceiro degrau
Reproduza a entrada em sequência, aperte o botão com mola e arraste o cartão; ajuste rigidez e amortecimento e veja o que muda.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagemmotionVidstack
Ver o que separa um player de um vídeo cru
Dê o play, troque a velocidade e ligue a legenda; o painel ao lado mostra o estado que o player publica e que a etiqueta crua esconde.
Pacote
Abrir no capítuloProjetar movimento, assinatura e narrativas por rolagem@vidstack/reactcmdk
Achar um destino entre quarenta digitando três letras
Abra a paleta, digite fat e escolha um item só pelo teclado; o painel embaixo conta o que o filtro deixou passar e quanto tempo levou.
Pacote
Abrir no capítuloConstruir formulários e estados de interaçãocmdknumber-flow
Animar indicadores que mudam ao vivo com formato pt-BR
Veja três indicadores fictícios rolarem a cada troca e compare com o número em texto puro. Pause, reinicie e observe o separador de milhar.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisão@number-flow/reactApache ECharts
Medir o custo de desenhar 200 mil pontos com o ECharts
Troque o tipo de gráfico e o volume de pontos, leia o tempo de desenho e alterne o eixo em zero. Mude o tema do site e veja as cores refazerem.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartsApache ECharts
Painel grande com visões coordenadas
Clique num canal para filtrar todas as visões, troque a densidade entre 6, 9 e 12 visões, alterne tema e movimento e abra a tela cheia.
Pacote
Abrir no capítuloProjetar gráficos e painéis pela decisãoechartssharp e svgo
Escolher a variante certa da imagem e conferir o teto de 150 KB
Arraste a largura da tela simulada, troque a densidade entre 1x e 2x e veja qual arquivo o navegador escolhe, quanto ele pesa e se cabe no orçamento.
Pacote
Abrir no capítuloValidar desempenho, autenticação e segurançasharp, svgoReact Flow (xyflow)
Disparar um pedido e ver o orquestrador distribuir, conferir e responder
Alterne paralelo e sequencial, ligue e desligue a verificação e use a medição real; observe o tempo de parede em cada combinação.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robô@xyflow/reactGSAP, Web Workers e number-flow
Dividir mil tarefas entre trabalhadores reais e correr três ritmos de geração
Execute com um trabalhador, depois com quatro e oito, e compare o tempo; em seguida percorra a corrida e separe a espera inicial do ritmo.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôgsap, @number-flow/reactThree.js com React Three Fiber, drei, Rapier e XR
Carregar o braço robótico, ver a física trabalhar e entrar na cena com o visor
Carregue a cena pelo botão, inicie o ciclo, mostre os ângulos das juntas, troque a câmera e a velocidade; com visor, entre em realidade virtual.
Pacote
Abrir no capítuloConstruir as cenas do orquestrador, do paralelismo e do robôthree, @react-three/fiber, @react-three/drei, @react-three/rapier, @react-three/xrMotion
Ver quatro agentes em raias trocando mensagens e a revisão devolvendo um trecho
Reproduza os 60 s de modelo, percorra o tempo pelo controle e esconda as mensagens para comparar a leitura; repare no tempo de parede contra a soma.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinamotionMediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Medir o quadro da cena e gravar seis segundos dela em vídeo
Suba as partículas, force um bloqueio de 300 ms e leia o medidor; depois grave seis segundos, veja o codec escolhido e baixe o arquivo.
Pacote
Abrir no capítuloEspecificar, medir e produzir as cenas da máquinasem pacotesigma.js, graphology com ForceAtlas2 e cosmos.gl
Ver o grafo real do curso e um grafo de milhares de nós se organizarem em aglomerados
Rode o layout no grafo real, passe o mouse pelos nós e busque uma entidade; troque para 20 mil nós e leia o medidor; depois carregue o modo massivo na placa de vídeo.
Pacote
Abrir no capítuloAnimar um grafo de conhecimento amplo em movimentosigma, graphology, graphology-layout-forceatlas2, graphology-generators, @cosmos.gl/graph
Capítulos vizinhos em Frontends com Vibecoding
- 15Construir formulários e estados de interação
- 16Publicar conteúdo encontrável em vários idiomas
- 17Projetar gráficos e painéis pela decisão
- 18Dimensionar tabelas e organizar o cálculo das métricas
- 19Escolher mapas, diagramas e cenas espaciais