📊 Escenario: datos que quieren convertirse en historia
Tienes una hoja de cálculo: país, año, población. Son solo números hasta que D3 los convierte en barras que crecen, cambian de posición y revelan el drama geopolítico de cuatro décadas. El espectador no lee la tabla — la ve suceder.
¿Por qué D3 para este proyecto?
D3 es la única biblioteca del stack con escalas nativas (linear, band, time) y gestión de transiciones de datos. No calculas píxeles manualmente: defines el dominio y el rango, y D3 resuelve la geometría. GSAP animaría lo visual, pero no entendería los datos.
✓ D3 es ideal cuando…
✗ D3 no es la mejor opción cuando…
🏃 Bar Race: el corazón del proyecto
En cada frame de Remotion, se lee el dataset del año correspondiente, las barras se reordenan y las posiciones Y se interpolan suavemente. Cuando China e India intercambian lugares, el bar race pausa de 12 fotogramas — el momento dramático.
💡 La pausa dramática
Cuando cambia el liderazgo, agrega 12 frames de pausa antes de reordenar. Es el equivalente cinematográfico de un primer plano: le da al espectador tiempo para procesar lo que acaba de pasar.
📐 Escalas de D3 en el contexto de Remotion
La integración D3+Remotion funciona porque D3 calcula la geometría y Remotion avanza en el tiempo. En cada llamada de useCurrentFrame(), calculas el frame de datos correspondiente y dejas que D3 mapee los píxeles.
const frame = useCurrentFrame(); const fps = useVideoConfig().fps; const year = Math.floor(interpolate(frame, [0, durationInFrames], [1990, 2030])); const data = getDataForYear(year); const xScale = scaleLinear().domain([0, maxPop]).range([0, width]); const yScale = scaleBand().domain(data.map(d => d.country)).range([0, height]);
🏷️ Etiquetas, año y legibilidad en movimiento
Las etiquetas que siguen a las barras son el alma de la carrera de barras. El contador de año en la esquina inferior derecha sitúa al espectador en el tiempo. Ambos deben calcularse en el mismo frame, sin un estado separado.
✓ Buenas prácticas para etiquetas
✗ Errores comunes
💡 Contador de año como ancla
El año grande en la esquina es la brújula del espectador. Tamaño mínimo: 64px, opacidad 0.5–0.7 para que no compita con las barras. Usa font-variant-numeric: tabular-nums para evitar que los dígitos «salten» al cambiar.
💬 El prompt completo
Este es el prompt literal que le das a Claude Code. Cada instrucción corresponde a un comportamiento específico de la bar race: Claude genera la composición Remotion con D3 integrado en una sola respuesta.
Create an animated bar race showing the ten most populous countries from 1990 to 2030. Animate transitions smoothly. Display ranking changes in real time. Pause briefly when leadership changes.
💡 ¿Por qué «Pause briefly when leadership changes»?
Esta instrucción específica hace que Claude implemente la pausa dramática. Sin ella, la reordenación ocurre de forma continua y pasa desapercibida. Con ella, el espectador tiene el momento cinematográfico de «¡espera, India superó a China!»
♻️ Entregable y reutilización
El entregable es un video infográfico al estilo de YouTube, pero el componente es una plantilla parametrizada que funciona con cualquier conjunto de datos de rankings temporales. Cambia la hoja de cálculo, modifica el título y renderiza otro video.
Orden de build: de la hoja de cálculo al video
Preparar el dataset
JSON array de objetos {country, year, population}. Datos de 1990, 2000, 2010, 2020, 2030. Interpola los años intermedios.
Montar escalas y estático
Valida que las barras aparezcan en el tamaño correcto, sin animación. Confirma que el ranking del año 1990 sea correcto.
Conectar el frame al tiempo
Usa interpolate() para mapear frame → año. Agrega la pausa en los años de cambio de liderazgo.
Pulido: colores, tipografía, música
Agrega la identidad visual de cada país, una fuente en negrita para los números y una pista sonora dramática (Trilha 4).
📋 Resumen del Módulo 3.2
- ✓D3 convierte datos en historias: escalas automáticas, orden dinámico, transiciones
- ✓La pausa de 12f en el cambio de liderazgo = momento cinematográfico de la carrera de barras
- ✓Las etiquetas siguen a las barras; el contador de año es el ancla temporal del espectador
- ✓El color persistente por país permite seguir a un país durante todo el video
- ✓Entregable: plantilla reutilizable para Finanzas, Deportes, Política, Economía
Siguiente módulo:
🏍️ Módulo 3.3 — Motorcycle Commercial (Three.js) →