Tema 04 — D3.js. Datos, SVG y gráficas
Voz generada por IA (ElevenLabs Matilda) basada en la guía de estudio narrada. Tu celular puede reproducir este audio mientras lees, o mientras haces otras cosas.
TL;DR: D3.js permite cargar datos CSV/JSON y convertirlos en gráficos SVG básicos como barras y diagramas de dispersión.
Puntos clave:
- El tema introduce el paso de manipular datos con D3 a dibujar visualizaciones reales. La recomendación central es avanzar despacio, practicando cada instrucción antes de modificar gráficos más complejos.
- D3 puede cargar datos desde archivos CSV y JSON mediante
d3.csv()yd3.json(). En CSV se accede a los valores por cabeceras, mientras que en JSON se recorren propiedades del objeto. - La función callback es esencial al cargar archivos externos. Si D3 no encuentra el archivo, por ejemplo porque la ruta es incorrecta, la función no se ejecuta.
- SVG es el formato recomendado para crear gráficos vectoriales en HTML. Permite dibujar círculos, rectángulos, elipses, líneas y texto con atributos como posición, tamaño, relleno, borde y opacidad.
- En SVG el punto
(0,0)está en la esquina superior izquierda. Esto afecta especialmente a los gráficos de barras, porque los rectángulos crecen hacia abajo si no se ajusta la coordenaday. - Un Bar Chart puede construirse primero con elementos
div, pero SVG ofrece mayor control visual y compatibilidad. Con D3, cada dato del array se enlaza a un rectángulo mediante.data(),.enter()y.append(). - El Scatter Plot usa una estructura de datos en pares
[x, y]y representa cada punto como un círculo SVG. Cada par alimenta los atributoscxycy.
Términos técnicos clave: D3.js, CSV, JSON, callback, SVG, HTML, d3.csv(), d3.json(), append(), Bar Chart, Scatter Plot, opacidad
Fórmulas, procesos o ejemplos relevantes:
- Carga de CSV: crear
comida.csv, llamar ad3.csv("comida.csv", callback), recorrer cada fila conforEach()y mostrar valores usando las cabecerasComidayPreferencia. - Carga de JSON: crear
coordenadas.json, llamar ad3.json("coordenadas.json", callback), recorrer objetos y acceder a propiedades comox_axis,y_axis,radiusycolor. - Creación de un Bar Chart con
div: definir una clase.bar, enlazardatasetcon.data(dataset), crear undivpor dato y ajustarheightconreturn d + "px". - Creación de un Bar Chart con SVG: definir
wyh, crear el elementosvg, añadir rectángulos, calcularxconi * (w / dataset.length), calcularwidthconw / dataset.length - 1, y ajustaryconh - d. - Ejemplo de ajuste visual: usar
fill: tealo un color calculado comorgb(0, 0, d * 10)para crear variación cromática según el dato. - Creación de un Scatter Plot: usar datos como
[[5, 20], [480, 90], ...], crear círculos y asignarcx = d[0],cy = d[1],r = 5.
Resumen narrativo
Sección titulada «Resumen narrativo»El Tema 4 marca el paso desde conocer D3.js como biblioteca hasta usarlo para construir visualizaciones básicas. La idea de fondo es que antes de modificar gráficos complejos conviene dominar los fundamentos: cómo entran los datos, cómo se recorren y cómo se transforman en elementos visibles dentro de una página HTML. Por eso el material insiste en practicar cada bloque de código y no precipitarse, incluso si ya se tienen nociones de programación o JavaScript.
El primer bloque práctico se centra en las estructuras de datos CSV y JSON. Con CSV, el ejemplo de comidas y preferencias muestra que D3 no trata el archivo como una matriz genérica, sino como una colección de filas cuyos valores se leen a partir de las cabeceras. Con JSON, el ejemplo de coordenadas permite ver una estructura más cercana a objetos con propiedades como posición, radio y color. En ambos casos, el patrón es parecido: cargar el archivo, esperar la callback y recorrer los datos con forEach().
Después, el tema introduce SVG como el soporte gráfico principal para trabajar con D3. Aunque es posible crear visualizaciones con elementos div, SVG resulta más adecuado para gráficos porque ofrece precisión, escalabilidad y compatibilidad entre dispositivos y navegadores. A partir de formas simples como círculos, rectángulos, elipses y líneas, se construye el vocabulario visual necesario para representar datos.
Un punto importante es comprender el sistema de coordenadas de SVG. El origen (0,0) está en la esquina superior izquierda, lo que puede resultar contraintuitivo al crear barras, porque los rectángulos se dibujan hacia abajo. Por eso, en un Bar Chart SVG, no basta con asignar la altura del rectángulo al valor del dato: también hay que desplazar su posición vertical mediante y = h - d para que las barras parezcan crecer desde una línea base común.
El Bar Chart se presenta primero con div, como una forma sencilla de entender la relación entre datos y altura visual. Luego se reconstruye con SVG, usando rectángulos generados dinámicamente con D3. Esta segunda versión permite controlar mejor la posición, la anchura, la separación, el color y la incorporación de etiquetas de texto sobre las barras.
Finalmente, el Scatter Plot muestra cómo cambiar la lógica visual sin abandonar el mismo patrón de trabajo. En vez de usar un array simple de valores, se emplean pares de coordenadas [x, y], y cada par se representa como un círculo. Aunque el gráfico aún no incluye ejes ni otros elementos más avanzados, el ejercicio deja claro el principio central: D3 conecta datos con elementos gráficos y permite que sus atributos dependan directamente de esos datos.
Para profundizar
Sección titulada «Para profundizar»- Practicar los ejemplos del tema usando archivos CSV y JSON en lugar de arrays escritos directamente en el código.
- Revisar el tutorial de SVG de W3Schools: https://www.w3schools.com/graphics/svg_intro.asp
- Consultar la documentación de W3C sobre Scalable Vector Graphics: https://www.w3.org/Graphics/SVG/
- Leer la explicación de DesarrolloWeb.com sobre qué es SVG: https://desarrolloweb.com/articulos/que-es-svg.html
- Profundizar en las secciones sobre SVG y dibujo básico de gráficos en Interactive Data Visualization for the Web de Scott Murray.
Transcripción de la clase aún no disponible. Se publicará cuando la lección magistral correspondiente esté procesada.
PDF original del Tema 04 (UNIR). Abrir en pestaña nueva.