El mapa de decisiones del track
El árbol que va desde qué quieres dibujar hasta la tecnología concreta, y la lista ordenada de las decisiones de un gráfico con el nivel que responde a cada una.
El árbol del territorio
Las cuatro ramas de arriba son la clasificación que hay que hacer antes que nada, y confundirlas es el error más caro del territorio:
Interfaz y decoración: fondos, formas decorativas, bordes complejos, transiciones. No uses SVG ni lienzo. CSS hace gradientes, máscaras, recortes, filtros y formas, se anima en el compositor y no añade ni un nodo. Un lienzo para pintar un fondo con gradiente es un error de categoría.
Iconos e ilustración: SVG, sin discusión. Vectorial, escalable, estilable desde CSS, accesible, y con el patrón de reutilización de use y su árbol de sombra y el patrón correcto para iconos.
Datos: la rama larga, y la que ocupa la mitad del track.
Imágenes y píxeles: lienzo, porque es el único que da acceso al array de píxeles.
Las decisiones de un gráfico, en orden
Están ordenadas por dependencia: cada una condiciona las siguientes, y tomarlas al revés obliga a rehacer.
Uno: qué frase tiene que producir el gráfico. Antes que nada. Sin ella no hay criterio para ninguna de las demás. Está en qué gráfico para qué pregunta.
Dos: qué canal codifica la variable principal. Posición, longitud, ángulo, área o color, con el coste medido de cada uno en la jerarquía perceptual. Esta decisión determina el tipo de gráfico, no al revés.
Tres: qué dominio tiene cada escala. Si empieza en cero, si se recalcula, si se comparte entre series o entre paneles. Es la decisión que más consecuencias tiene por línea de código, y está en qué es una escala.
Cuatro: qué tipo de escala. Lineal, logarítmica, de potencia, de tiempo, ordinal o de banda, según lineal, logarítmica y de potencia y tiempo, ordinal y de banda.
Cinco: cuántas marcas y con qué formato. El algoritmo de las marcas bonitas, con el contador derivado del tamaño y no fijo.
Seis: qué tecnología. El árbol de el enfoque híbrido, que a su vez depende del umbral de el umbral de elementos.
Siete: qué paleta. Secuencial, divergente o cualitativa, con el punto neutro donde de verdad está, según el color en visualización.
Ocho: cómo se anota. Título con verbo, etiquetado directo, líneas de referencia, según anotación, etiquetado y título.
Nueve: cómo se interactúa. Eventos del DOM o hit testing, con las cuatro técnicas de la interacción.
Diez: cómo sale del navegador. Exportación e impresión, según exportación y render en servidor y accesibilidad, impresión y zoom.
La tabla de referencia
| Necesito | Respuesta | Dónde |
|---|---|---|
| Un icono que herede el color del texto | fill="currentColor" |
currentColor |
| Reutilizar una forma muchas veces | symbol más use |
symbol y su viewBox |
| Un gradiente que no se deforma | gradientUnits="userSpaceOnUse" |
gradientUnits |
| Recortar con borde suave | mask en vez de clipPath |
elegir entre recorte y máscara |
| Una sombra que no se corta | Ampliar la región del filtro | la región del filtro |
| Texto que sobreviva a la exportación | Contornos o fuente incrustada | las fuentes en un SVG exportado |
| Que un gráfico se pueda leer sin ver | Tabla alternativa y navegación | una gráfica de datos accesible |
| Que el SVG de diseño no rompa nada | SVGO con los plugins correctos | SVGO y los plugins que rompen |
| Construir SVG desde JavaScript | createElementNS con el namespace |
createElementNS |
| Actualizar sin recrear el DOM | Reutilizar nodos por clave | actualizar en vez de recrear |
| Descargar el gráfico | Serializar con xmlns |
serializar y descargar |
| Un eje con buen aspecto | Las cinco piezas y sus alineaciones | construir un eje a mano |
| Escalas, formas y jerarquías ya escritas | d3-scale, d3-shape, d3-hierarchy |
la filosofía modular de D3 |
| Suavizar sin mentir | curveMonotoneX |
los generadores de forma |
| Que D3 no pelee con mi framework | Solo la matemática | D3 solo para la matemática |
| Muchos puntos con tooltip rápido | Índice espacial o color | la interacción |
Las cuatro que no se pueden posponer
Casi todas las decisiones de la lista se pueden cambiar más tarde con un coste razonable. Cuatro no, y conviene saber cuáles son antes de escribir la primera línea.
La separación entre cálculo y render. Añadirla después de tener tres gráficos escritos es reescribir los tres. Es la decisión estructural de la arquitectura de un sistema de visualización y hay que tomarla el primer día.
Si el gráfico tiene que existir fuera del navegador. Correos, informes, vistas previas de enlaces. Descubrirlo tarde puede obligar a cambiar de tecnología entera.
Si el contenido tiene que ser accesible y buscable. Es un requisito legal en muchos contextos, y si la respuesta es sí, la rama del árbol cambia de raíz.
Quién es el dueño del DOM. Mezclar dos dueños produce fallos que no se depuran. La decisión se toma al elegir la biblioteca y arreglarla después significa quitarla.
Las tres primeras son la misma pregunta formulada de tres maneras: ¿este gráfico va a vivir solo dentro de una pestaña abierta, o va a tener que existir en otros sitios? Si la respuesta es lo segundo, la arquitectura tiene que estar preparada antes de que llegue el requisito, porque cuando llegue vendrá con fecha.