Color System para Datos
Color System para Datos
8 reglasElige el tipo de paleta según el dato: nominal → categórica, ordenado → secuencial, con punto medio → divergente
Los tres tipos de paleta sirven propósitos radicalmente distintos y son mutuamente incorrectos si se intercambian. Una paleta categórica (multi-hue, sin orden implícito) aplicada a datos continuos crea la ilusión de grupos discretos; una secuencial (un hue, lightness progresiva) aplicada a datos nominales sugiere una jerarquía falsa; la divergente tiene un punto medio neutro y dos extremos oscuros para datos con un centro significativo (cero, promedio, meta). Elegir el tipo correcto es la decisión de mayor impacto en la legibilidad de un gráfico. La heurística práctica: usa distintos hues para valores sin orden (países, industrias) y shades/gradientes para valores ordenados (porcentajes, rankings, escalas Likert).
ColorBrewer (Cynthia Brewer, Penn State) · Datawrapper "Quantitative vs qualitative color scales" (Lisa Charlotte Muth) · Stevens' Levels of MeasurementLimita las paletas categóricas a 6-8 colores; más allá requiere agrupar o codificar de otra forma
El sistema visual humano distingue con confianza entre 6 y 8 tonos en una misma visualización; más allá de ese umbral los colores se confunden, sobre todo en baja saturación, proyección o daltonismo. Superar el límite no significa "más información", es un problema de diseño de datos: la solución es agrupar las categorías menores en "Otros", recurrir a small multiples, o añadir un canal secundario (forma, patrón, etiqueta directa). IBM Carbon llega a 14 colores como tope absoluto con un algoritmo que maximiza el contraste entre adyacentes, pero el consenso práctico de dataviz se mantiene en 6-8 distinguibles.
Datawrapper "Quantitative vs qualitative color scales" · IBM Carbon Design System "Color palettes and accessibility for data visualization"Nunca uses el color como único canal; añade patrón, forma o etiqueta (WCAG 1.4.1, nivel A)
El color como único diferenciador entre categorías viola WCAG 1.4.1 (Use of Color, nivel A, obligatorio): el color no puede ser el único medio visual para transmitir información. En la práctica, barras, líneas o segmentos de pie que solo se distinguen por color son inaccesibles para usuarios con deficiencia de visión cromática (alrededor del 8% de los hombres y 0.5% de las mujeres tienen daltonismo rojo-verde), para quienes usan alto contraste, y para pantallas de baja calidad o bajo luz solar directa. Añade siempre al menos un canal redundante: etiqueta directa, patrón de relleno, forma de marcador o posición.
WCAG 2.1 SC 1.4.1 Use of Color (Level A, W3C) · Colour Blind Awareness (8% hombres / 0.5% mujeres, rojo-verde)Diseña con paletas seguras para daltonismo desde el inicio; simula antes de publicar
Las deficiencias rojo-verde (deuteranomalía, deuteranopía, protanomalía, protanopía) afectan a alrededor del 8% de los hombres y 0.5% de las mujeres de ascendencia noreuropea: en un equipo de 100 personas, estadísticamente hay 8 hombres que no distinguirán un gráfico rojo/verde. El par rojo (#e74c3c) + verde (#2ecc71) para "Aprobado/Rechazado" se vuelve indistinguible en deuteranopía; el par azul (#0077BB) + naranja (#EE7733), recomendado por la investigación de Wong, se mantiene distinguible en todos los tipos de daltonismo rojo-verde. Usa una paleta colorblind-safe (ColorBrewer, Viz Palette) desde el primer wireframe y verifícala con un simulador, no la "ajustes" al final.
Colour Blind Awareness (prevalencia por tipo) · ColorBrewer (filtro "colorblind safe") · Wong "Points of view: Color blindness" (Nature Methods) vía IBM Carbon / Viz Palette (JND)Garantiza contraste 3:1 entre elementos gráficos adyacentes (WCAG 1.4.11, nivel AA)
WCAG 1.4.11 Non-text Contrast (nivel AA) exige un contraste mínimo de 3:1 entre los elementos gráficos informativos, barras, sectores, puntos, líneas, y los colores adyacentes (fondo y otras series). El requisito aplica a todos los lados: una barra puede contrastar bien contra el fondo blanco pero insuficientemente contra la barra vecina de la misma familia de color. La práctica habitual es añadir un borde de 1px del color del fondo entre series adyacentes, lo que garantiza la separación sin alterar la paleta. IBM Carbon reconoce que la separación entre colores vecinos es el punto más difícil de su sistema categórico.
WCAG 2.1 SC 1.4.11 Non-text Contrast (Level AA, W3C) · W3C Technique G207 · IBM Carbon "Color palettes and accessibility for data visualization"Usa color semántico consistente (rojo=negativo, verde=positivo), pero documenta la convención
La codificación semántica, rojo para alerta/pérdida, verde para ok/ganancia, reduce la carga cognitiva porque aprovecha el aprendizaje previo (semáforos, alertas de sistema). Pero la convención es culturalmente occidental: en China y muchos mercados asiáticos el rojo representa buena suerte y las ganancias bursátiles, mientras el verde señala pérdidas. Un dashboard financiero con convención occidental desplegado en Hong Kong o Shanghái comunica lo contrario. La regla: usa semántica cromática, pero refuérzala con un signo explícito (flecha ▲/▼) como canal primario, documenta la convención en la leyenda, y adapta si la audiencia es global.
Zencos "Data visualization color & culture" · FasterCapital "Psychology of color coding" · criterio reforzado con accesibilidad (azul-naranja sobre rojo-verde)Evita el arcoíris/jet para datos continuos; usa colormaps perceptualmente uniformes (viridis)
El colormap arcoíris (jet) es perceptualmente no uniforme: la misma variación de dato produce cambios visuales muy distintos según el tramo del rango, con saltos bruscos de luminancia en las zonas cian y amarilla que crean gradientes falsos y "estructuras" inexistentes, convierte un campo suave en uno aparentemente segmentado e induce al lector a ver patrones que no están en los datos. El análisis de Stoelzle & Stein (HESS, 2021) sobre cientos de papers reporta errores de percepción de hasta el 7.5% de la variación mostrada. Viridis, plasma, inferno y cividis (Matplotlib, D3, R) fueron diseñados para ser perceptualmente uniformes y seguros para daltonismo; Matplotlib y MATLAB ya los adoptaron como default sobre el arcoíris.
Stoelzle & Stein (HESS, 2021, Univ. Freiburg) · The Conversation "How rainbow colour maps can mislead" · MathWorks "A dangerous rainbow"El modo oscuro requiere una paleta propia; no inviertas la de luz
Invertir o aclarar la paleta diurna para modo oscuro destruye dos propiedades críticas: el contraste contra el nuevo fondo oscuro (un azul oscuro de luz se vuelve indistinguible sobre gris oscuro) y la semántica cromática (un rojo aclarado puede parecer rosa o salmón y pierde peso). Además, los colores brillantes sobre fondo oscuro se perciben más saturados, así que la misma saturación parece más intensa. La solución es una paleta oscura independiente con tokens propios (--color-data-1-dark…): mismo hue, saturación reducida, luminosidad ajustada para cumplir el contraste 3:1 de WCAG 1.4.11 contra el fondo oscuro específico. IBM Carbon midió que su tema oscuro cumple el contraste mejor que el claro precisamente por usar tokens diseñados, no invertidos.
- R-688 Elige el tipo de paleta según el dato: nominal → categórica, ordenado → secuencial, con punto medio → divergente
- R-689 Limita las paletas categóricas a 6-8 colores; más allá requiere agrupar o codificar de otra forma
- R-690 Nunca uses el color como único canal; añade patrón, forma o etiqueta (WCAG 1.4.1, nivel A)
- R-691 Diseña con paletas seguras para daltonismo desde el inicio; simula antes de publicar
- R-692 Garantiza contraste 3:1 entre elementos gráficos adyacentes (WCAG 1.4.11, nivel AA)
- R-693 Usa color semántico consistente (rojo=negativo, verde=positivo), pero documenta la convención
- R-694 Evita el arcoíris/jet para datos continuos; usa colormaps perceptualmente uniformes (viridis)
- R-695 El modo oscuro requiere una paleta propia; no inviertas la de luz