D3.js, SVG, escalas y data binding: cómo pasar de un gráfico hecho a una visualización programable

Aprende qué aporta D3.js frente a herramientas no-code, cómo pensar SVG y escalas, y construye una visualización básica con data binding sin perder claridad visual.

Después de trabajar formatos como infografía, `Tableau Public` y `Power BI`, toca entrar en una herramienta distinta: `D3.js`. Aquí ya no partes de un panel con componentes prefabricados; partes de datos, `SVG` y lógica visual programada.

Eso no significa que `D3.js` sea automáticamente mejor. Significa que te da un nivel de control mucho mayor sobre forma, interacción, transición y estructura. A cambio, exige pensar como diseñador de información y como desarrollador frontend al mismo tiempo.

La clave de esta lección es entender qué cambia al pasar de una herramienta no-code a una librería de bajo nivel: tú decides cómo se construye cada marca visual, cómo se traduce el dato a posición o tamaño y cómo se actualiza el DOM cuando cambian los datos.

El objetivo es que comprendas el papel de `D3.js`, construyas un gráfico básico con `SVG`, escalas y `data binding`, y sepas distinguir cuándo compensa programar una visualización frente a resolverla con una herramienta ya empaquetada.

  • La diferencia principal no es estética; es de control y de nivel de abstracción.
  • Antes de hablar de D3, conviene entender por qué tantas visualizaciones web nacen en SVG.
  • `SVG` representa elementos vectoriales dentro del DOM: rectángulos, líneas, textos, círculos y grupos. Eso lo vuelve especialmente útil para gráficos donde necesitas inspección, accesibilidad, interacción o ajuste fino de cada marca visual.
  • Frente a un gráfico como imagen, aquí cada barra o etiqueta existe como elemento manipulable. Frente a un canvas de dibujo libre, aquí mantienes una estructura más semántica y más fácil de depurar.
  • Una escala no dibuja; traduce un valor de datos a una coordenada o dimensión visual.

Qué aporta D3.js frente a una herramienta cerrada

La diferencia principal no es estética; es de control y de nivel de abstracción.

SVG como lienzo estructurado

Antes de hablar de D3, conviene entender por qué tantas visualizaciones web nacen en SVG.

`SVG` representa elementos vectoriales dentro del DOM: rectángulos, líneas, textos, círculos y grupos. Eso lo vuelve especialmente útil para gráficos donde necesitas inspección, accesibilidad, interacción o ajuste fino de cada marca visual.

Frente a un gráfico como imagen, aquí cada barra o etiqueta existe como elemento manipulable. Frente a un canvas de dibujo libre, aquí mantienes una estructura más semántica y más fácil de depurar.

Las escalas traducen dato a espacio

Una escala no dibuja; traduce un valor de datos a una coordenada o dimensión visual.

Cuando conviertes ventas, población o puntuación en altura de barra o posición horizontal, estás usando una función de traducción. Ahí está una de las grandes ideas de `D3.js`: separar el dato original de su representación visual mediante escalas claras.

Eso conecta directamente con lo aprendido en el curso sobre `Bertin`, encodings y gramática visual. Programar con `D3` no sustituye esos principios; los hace explícitos en código.

  • `scaleBand()` suele servir para categorías.
  • `scaleLinear()` suele servir para magnitudes continuas.
  • La escala define dominio y rango: del dato al espacio visual.

Data binding: unir datos y elementos del DOM

El gesto mental importante es este: un dato puede corresponder a una marca visual.

Con `data binding`, D3 enlaza un array de datos con una selección de elementos. Eso permite crear, actualizar o eliminar barras, círculos o etiquetas en función de la información disponible.

No es magia: es una forma muy potente de pensar la interfaz. En lugar de dibujar una barra manualmente, declaras que cada elemento del array debe producir una barra. Esa idea es fundamental para escalar visualizaciones.

Caso aplicado: barras por categoría en una pieza web

Imagina una página editorial que compara visitas por sección.

Con una herramienta no-code podrías resolverlo rápido, pero quedarías más limitado en integración, microinteracciones o estilo visual específico. Con `D3.js`, puedes montar el gráfico dentro de la propia narrativa web y controlar exactamente las barras, ejes, etiquetas y estados.

La pregunta no es si D3 es más difícil, sino si el proyecto necesita ese nivel de personalización y si el valor añadido compensa el coste técnico.

Práctica evaluable: pensar un gráfico básico en D3 con criterio

La práctica busca que traduzcas una estructura visual simple a lógica programable.

Errores comunes al empezar con D3.js

  • Intentar memorizar API antes de entender qué problema resuelve cada parte.
  • Dibujar valores a ojo en lugar de pasar por escalas.
  • Olvidar que el gráfico sigue necesitando jerarquía, contraste y contexto.
  • Confundir personalización técnica con claridad visual.
  • Entrar en animaciones y transiciónes antes de tener una estructura básica estable.
Diseño de la información y visualización de datos
22

D3.js, SVG, escalas y data binding: cómo pasar de un gráfico hecho a una visualización programable

Aprende qué aporta D3.js frente a herramientas no-code, cómo pensar SVG y escalas, y construye una visualización básica con data binding sin perder claridad visual.

Código del tema: d3 svg escalas

📘 Teoría

Qué aporta D3.js frente a una herramienta cerrada

La diferencia principal no es estética; es de control y de nivel de abstracción.

1

Con Power BI o Tableau

Partes de vistas y controles predefinidos, con mucha velocidad para análisis y publicación.

2

Con D3.js

Construyes tú mismo la representación visual y decides cómo cada dato se convierte en forma, posición o transición.

3

Cuándo compensa

Cuando necesitas una visualización web muy personalizada, narrativa, interactiva o integrada en producto.

4

Qué exige

Base de JavaScript, criterio de diseño de información y paciencia para pensar estructura y escalas.

SVG como lienzo estructurado

Antes de hablar de D3, conviene entender por qué tantas visualizaciones web nacen en SVG.

`SVG` representa elementos vectoriales dentro del DOM: rectángulos, líneas, textos, círculos y grupos. Eso lo vuelve especialmente útil para gráficos donde necesitas inspección, accesibilidad, interacción o ajuste fino de cada marca visual.

Frente a un gráfico como imagen, aquí cada barra o etiqueta existe como elemento manipulable. Frente a un canvas de dibujo libre, aquí mantienes una estructura más semántica y más fácil de depurar.

Las escalas traducen dato a espacio

Una escala no dibuja; traduce un valor de datos a una coordenada o dimensión visual.

Cuando conviertes ventas, población o puntuación en altura de barra o posición horizontal, estás usando una función de traducción. Ahí está una de las grandes ideas de `D3.js`: separar el dato original de su representación visual mediante escalas claras.

Eso conecta directamente con lo aprendido en el curso sobre `Bertin`, encodings y gramática visual. Programar con `D3` no sustituye esos principios; los hace explícitos en código.

  • `scaleBand()` suele servir para categorías.
  • `scaleLinear()` suele servir para magnitudes continuas.
  • La escala define dominio y rango: del dato al espacio visual.

Data binding: unir datos y elementos del DOM

El gesto mental importante es este: un dato puede corresponder a una marca visual.

1

Con `data binding`, D3 enlaza un array de datos con una selección de elementos. Eso permite crear, actualizar o eliminar barras, círculos o etiquetas en función de la información disponible.

2

No es magia: es una forma muy potente de pensar la interfaz. En lugar de dibujar una barra manualmente, declaras que cada elemento del array debe producir una barra. Esa idea es fundamental para escalar visualizaciones.

Caso aplicado: barras por categoría en una pieza web

Imagina una página editorial que compara visitas por sección.

Con una herramienta no-code podrías resolverlo rápido, pero quedarías más limitado en integración, microinteracciones o estilo visual específico. Con `D3.js`, puedes montar el gráfico dentro de la propia narrativa web y controlar exactamente las barras, ejes, etiquetas y estados.

La pregunta no es si D3 es más difícil, sino si el proyecto necesita ese nivel de personalización y si el valor añadido compensa el coste técnico.

Práctica evaluable: pensar un gráfico básico en D3 con criterio

La práctica busca que traduzcas una estructura visual simple a lógica programable.

1

Propósito

Entender cómo se reparten responsabilidades entre datos, escala, SVG y marcas visuales.

2

Instrucciones

Usa un array pequeño de datos y dibuja un gráfico de barras en SVG con D3. Debe tener categorías en el eje horizontal y altura proporcional al valor.

3

Entregable esperado

Un bloque funcional que genere barras desde datos, use al menos una escala y muestre etiquetas o un eje mínimo.

4

Criterios de corrección

La visualización debe traducir bien el dato, mantener proporciones coherentes y evitar alturas arbitrarias dibujadas a mano.

5

Guía de resolución

Empieza por definir datos, luego escalas, después el SVG y por último une el array a las barras.

Errores comunes al empezar con D3.js

  • Intentar memorizar API antes de entender qué problema resuelve cada parte.
  • Dibujar valores a ojo en lugar de pasar por escalas.
  • Olvidar que el gráfico sigue necesitando jerarquía, contraste y contexto.
  • Confundir personalización técnica con claridad visual.
  • Entrar en animaciones y transiciónes antes de tener una estructura básica estable.

🧭 Visuales clave

De datos a marcas visuales con D3.js

Ayuda a entender la lógica mental de D3.js: datos, escalas, SVG y data binding trabajando juntos para producir una visualización programable.

Diagrama que explica el paso de datos a escalas, SVG y marcas visuales en una visualización construida con D3.js

🧪 Aprende probando

Ejemplo Ejemplo guiado: barras SVG con D3 y escalas Construye un gráfico de barras simple para ver cómo datos, escalas y SVG se conectan.

🏁 Retos

Reto Reto: añade una categoría nueva con data binding Amplía el gráfico incorporando un dato adicional sin dibujar la barra manualmente.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Diseño de la información y visualización de datos.

Test de Diseño de la información y visualización de datos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com