Comparison
Destaque-um-mute-os-outros — você vs pares, atual vs baseline, A/B test.
Comparison é o esquema para o pattern destaque-um-mute-os-outros — quatro neutros muted + um highlight colorido. É a paleta canônica para "você vs seus pares", "metric atual vs baseline", A/B test, e qualquer caso onde a leitura é "esse aqui versus o resto".
Tokens
| Amostra | Token | Primitivo | Significado |
|---|---|---|---|
| --color-chart-cmp-highlight | blue-600 | A série em foco | |
| --color-chart-cmp-mute-1 | neutral-700 | Backdrop principal | |
| --color-chart-cmp-mute-2 | neutral-500 | Backdrop secundário | |
| --color-chart-cmp-mute-3 | neutral-400 | Backdrop terciário | |
| --color-chart-cmp-mute-4 | neutral-300 | Backdrop quaternário |
Quando usar
- Bar chart com uma categoria em destaque + outras em neutro.
- Line chart "sua semana vs todas as outras em cinza".
- Before/after comparisons com a versão atual em cor.
- A/B test results com a variante vencedora em destaque.
- Cohort analysis focando uma cohort específica vs as demais.
Por que existe um esquema só pra isso
Em DS de produto, esse pattern aparece o tempo inteiro — suficientemente para merecer um nome e um conjunto canônico de tokens. A literatura clássica (ColorBrewer) não cobre, mas qualquer dashboard moderno tem várias instâncias dele.
A intenção dos quatro stops "mute" não é variedade — é hierarquia visual sutil. Se todas as séries-fundo forem exatamente iguais em peso, elas viram ruído. A escala neutral-700 → neutral-300 dá uma diferença discreta de ordem (a primeira mute é mais escura, a última mais clara), úteis quando você quer indicar uma ordem secundária sem competir com o highlight.
Quando não usar
- Você tem duas séries com peso semântico igual — use Categorical.
- O dado tem polos bom/ruim — use Status.
- Dado contínuo bipolar — use Divergent.
Anti-patterns
Tratar Comparison como "Categorical com 5 cores". A intenção é hierarquia visual, não variedade. Se todas as séries forem coloridas, o destaque some — e você acaba com um Categorical mal calibrado.
Múltiplos highlights no mesmo chart. Comparison é um-contra-os-outros. Se você precisa destacar dois, está no território de Categorical (com 2 séries primárias + N de fundo) ou de small multiples.
Exemplo de consumo
import { Bar, BarChart } from "recharts";
const data = peers.map((p) => ({
...p,
fill: p.id === currentUserId
? "var(--color-chart-cmp-highlight)"
: `var(--color-chart-cmp-mute-${Math.min(4, p.tier)})`,
}));
<BarChart data={data}>
<Bar dataKey="performance" />
</BarChart>