Acessibilidade e números
Contraste, cor, alternativa em texto e números em pt-BR
Regras
Gráfico acessível
Um gráfico precisa ser lido por quem não distingue cores, por quem usa leitor de tela e por quem navega pelo teclado.
| Regra | Como aplicar |
|---|---|
| Contraste de 3:1 para o que é desenhado | Linhas, barras, fatias e pontos precisam de 3:1 contra o fundo (WCAG 1.4.11). Em barras com gradiente, vale também para a parte mais clara; se ela não alcançar, use uma borda. |
| Contraste de 4,5:1 para o que é texto | Rótulos dos eixos, valores, legenda e títulos seguem o contraste de texto, como o resto da interface. |
| Cor nunca é o único sinal | Diferencie séries também por rótulo direto, legenda com texto ou traço (a mediana é tracejada). Cerca de 1 em cada 12 homens tem alguma deficiência na visão de cores. |
| Todo gráfico tem alternativa em texto | Um título que diz o que é medido, um resumo de uma ou duas frases com a principal leitura e, sempre que possível, os dados em tabela. |
| Nada essencial só no tooltip | O tooltip abre também com o foco do teclado. Valores que a pessoa precisa ler ficam visíveis no gráfico ou na tabela. |
| Teclado chega aos dados | No Recharts, ative a prop accessibilityLayer, que permite percorrer os pontos com as setas. |
| Movimento respeita a preferência | Desligue a animação de entrada quando a pessoa pede movimento reduzido (prefers-reduced-motion). |
Alternativa em texto num SVG
grafico.html
<figure>
<svg role="img" aria-labelledby="titulo-casos resumo-casos">…</svg>
<figcaption>
<p id="titulo-casos">Casos de dengue por semana, Brasil, 2026</p>
<p id="resumo-casos">Os casos subiram por seis semanas e caíram 30% nas últimas duas.</p>
</figcaption>
</figure>
<figure>
<svg role="img" aria-labelledby="titulo-casos resumo-casos">…</svg>
<figcaption>
<p id="titulo-casos">Casos de dengue por semana, Brasil, 2026</p>
<p id="resumo-casos">Os casos subiram por seis semanas e caíram 30% nas últimas duas.</p>
</figcaption>
</figure> Números
Números e datas em pt-BR
Ponto separa milhar e vírgula separa decimal. Em eixos e indicadores, use a forma compacta ("12 mil"). Formate com Intl, que já vem no navegador, em vez de montar o texto à mão.
| Valor | Formato | Resultado |
|---|---|---|
1234567.89 | Número completo | 1.234.567,89 |
12000 | Compacto | 12 mil |
1500000 | Compacto | 1,5 mi |
2300000000 | Compacto | 2,3 bi |
0.123 | Variação percentual | +12,3% |
2026-05-15 | Mês no eixo | mai. |
2026-05-15 | Mês e ano | maio de 2026 |
formatos.ts
export const numero = new Intl.NumberFormat('pt-BR');
export const compacto = new Intl.NumberFormat('pt-BR', { notation: 'compact', maximumFractionDigits: 1 });
export const variacao = new Intl.NumberFormat('pt-BR', { style: 'percent', maximumFractionDigits: 1, signDisplay: 'exceptZero' });
export const mes = new Intl.DateTimeFormat('pt-BR', { month: 'short' });
compacto.format(12000); // "12 mil"
variacao.format(0.123); // "+12,3%"
export const numero = new Intl.NumberFormat('pt-BR');
export const compacto = new Intl.NumberFormat('pt-BR', { notation: 'compact', maximumFractionDigits: 1 });
export const variacao = new Intl.NumberFormat('pt-BR', { style: 'percent', maximumFractionDigits: 1, signDisplay: 'exceptZero' });
export const mes = new Intl.DateTimeFormat('pt-BR', { month: 'short' });
compacto.format(12000); // "12 mil"
variacao.format(0.123); // "+12,3%"