En esta sección, aprenderás a dar tus primeros pasos con D3.js. Vamos a crear una visualización simple para que te familiarices con la biblioteca y sus capacidades básicas.
- Configuración Inicial
Antes de comenzar, asegúrate de que tu entorno esté configurado correctamente. Si no lo has hecho, revisa la sección anterior sobre cómo configurar tu entorno.
1.1. Estructura del Proyecto
Crea una estructura básica de proyecto con los siguientes archivos:
1.2. Archivo HTML
En index.html
, configura un documento HTML básico que incluya D3.js:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Primeros Pasos con D3.js</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>Mi Primera Visualización con D3.js</h1> <div id="chart"></div> <script src="https://d3js.org/d3.v7.min.js"></script> <script src="script.js"></script> </body> </html>
1.3. Archivo CSS
En style.css
, agrega algunos estilos básicos:
1.4. Archivo JavaScript
En script.js
, comenzaremos a escribir nuestro código D3.js.
- Creando una Visualización Simple
Vamos a crear una visualización simple: un gráfico de barras.
2.1. Datos de Ejemplo
Primero, definamos algunos datos de ejemplo en script.js
:
2.2. Selección y Creación de Elementos
Usaremos D3.js para seleccionar el contenedor #chart
y crear barras para cada dato:
const width = 500; const height = 300; const barWidth = width / data.length; const chart = d3.select("#chart") .append("svg") .attr("width", width) .attr("height", height); chart.selectAll("rect") .data(data) .enter() .append("rect") .attr("width", barWidth - 1) .attr("height", d => d) .attr("x", (d, i) => i * barWidth) .attr("y", d => height - d) .attr("fill", "steelblue");
Explicación del Código
-
Definición de Datos:
const data = [30, 86, 168, 281, 303, 365];
define un arreglo de datos que representarán las alturas de las barras. -
Configuración del SVG:
const width = 500; const height = 300; const barWidth = width / data.length;
Aquí definimos el ancho y alto del SVG, así como el ancho de cada barra.
-
Creación del SVG:
const chart = d3.select("#chart") .append("svg") .attr("width", width) .attr("height", height);
Seleccionamos el contenedor
#chart
y le añadimos un elementosvg
con las dimensiones especificadas. -
Creación de Barras:
chart.selectAll("rect") .data(data) .enter() .append("rect") .attr("width", barWidth - 1) .attr("height", d => d) .attr("x", (d, i) => i * barWidth) .attr("y", d => height - d) .attr("fill", "steelblue");
selectAll("rect")
: Selecciona todos los elementosrect
(inicialmente no hay ninguno)..data(data)
: Vincula los datos al conjunto de elementos seleccionados..enter()
: Crea un nuevo conjunto de elementos para cada dato..append("rect")
: Añade unrect
para cada dato..attr("width", barWidth - 1)
: Define el ancho de cada barra..attr("height", d => d)
: Define la altura de cada barra basada en el dato..attr("x", (d, i) => i * barWidth)
: Define la posición horizontal de cada barra..attr("y", d => height - d)
: Define la posición vertical de cada barra..attr("fill", "steelblue")
: Define el color de las barras.
- Ejercicio Práctico
Ejercicio
Modifica el código para que las barras tengan un color diferente basado en su altura. Usa una escala de colores de D3.js.
Solución
const colorScale = d3.scaleLinear() .domain([0, d3.max(data)]) .range(["lightblue", "darkblue"]); chart.selectAll("rect") .data(data) .enter() .append("rect") .attr("width", barWidth - 1) .attr("height", d => d) .attr("x", (d, i) => i * barWidth) .attr("y", d => height - d) .attr("fill", d => colorScale(d));
Explicación de la Solución
-
Escala de Colores:
const colorScale = d3.scaleLinear() .domain([0, d3.max(data)]) .range(["lightblue", "darkblue"]);
Creamos una escala lineal que mapea los valores de los datos a un rango de colores.
-
Aplicación de la Escala de Colores:
.attr("fill", d => colorScale(d));
Usamos la escala de colores para definir el color de cada barra basado en su altura.
Conclusión
En esta sección, has aprendido a crear una visualización simple con D3.js. Has visto cómo seleccionar elementos, vincular datos y crear gráficos básicos. Estos son los primeros pasos fundamentales para trabajar con D3.js. En las próximas secciones, profundizaremos en cómo trabajar con selecciones y datos de manera más avanzada.
D3.js: De Principiante a Avanzado
Módulo 1: Introducción a D3.js
Módulo 2: Trabajando con Selecciones
- Entendiendo las Selecciones
- Seleccionando Elementos del DOM
- Modificando Elementos
- Vinculando Datos a Elementos
Módulo 3: Datos y Escalas
- Cargando y Analizando Datos
- Usando Escalas de D3
- Escalas Lineales y Ordinales
- Escalas de Tiempo y Logarítmicas
Módulo 4: Creando Visualizaciones Básicas
- Creando Gráficos de Barras
- Creando Gráficos de Líneas
- Creando Gráficos de Pastel
- Creando Diagramas de Dispersión
Módulo 5: Visualizaciones Avanzadas
- Creando Diseños Jerárquicos
- Creando Diseños de Fuerza
- Creando Mapas Geográficos
- Creando Visualizaciones Personalizadas
Módulo 6: Interactividad y Animación
Módulo 7: Trabajando con Datos Reales
- Obteniendo Datos de APIs
- Limpieza y Transformación de Datos
- Integración con Otras Bibliotecas
- Estudios de Caso y Ejemplos
Módulo 8: Rendimiento y Optimización
- Optimizando el Rendimiento de D3.js
- Manejando Grandes Conjuntos de Datos
- Vinculación de Datos Eficiente
- Depuración y Solución de Problemas
Módulo 9: Mejores Prácticas y Técnicas Avanzadas
- Organización del Código y Modularidad
- Componentes Reutilizables
- Patrones Avanzados de D3.js
- Contribuyendo a la Comunidad de D3.js