En este módulo, aprenderás a crear gráficos de barras utilizando D3.js. Los gráficos de barras son una de las visualizaciones más comunes y útiles para representar datos categóricos. Vamos a desglosar el proceso en pasos claros y detallados para que puedas seguirlos fácilmente.
- Configuración Inicial
1.1. Estructura del HTML
Primero, necesitamos una estructura básica de HTML donde insertaremos nuestro gráfico de barras.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Gráfico de Barras con D3.js</title>
<script src="https://d3js.org/d3.v6.min.js"></script>
<style>
.bar {
fill: steelblue;
}
.bar:hover {
fill: orange;
}
.axis-label {
font-size: 12px;
}
</style>
</head>
<body>
<div id="chart"></div>
<script src="barchart.js"></script>
</body>
</html>1.2. Archivo JavaScript
Crea un archivo barchart.js donde escribiremos el código D3.js para generar el gráfico de barras.
- Preparación de los Datos
Para este ejemplo, utilizaremos un conjunto de datos simple. Puedes cargar datos desde un archivo CSV, JSON o una API, pero para simplificar, usaremos un array de objetos.
const data = [
{ name: 'A', value: 30 },
{ name: 'B', value: 80 },
{ name: 'C', value: 45 },
{ name: 'D', value: 60 },
{ name: 'E', value: 20 },
{ name: 'F', value: 90 },
{ name: 'G', value: 55 },
];
- Configuración del SVG
3.1. Dimensiones y Margenes
Definimos las dimensiones del SVG y los márgenes para el gráfico.
const margin = { top: 20, right: 30, bottom: 40, left: 40 };
const width = 800 - margin.left - margin.right;
const height = 400 - margin.top - margin.bottom;3.2. Creación del SVG
Creamos el elemento SVG y lo añadimos al DOM.
const svg = d3.select("#chart")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", `translate(${margin.left},${margin.top})`);
- Creación de las Escalas
4.1. Escala X
La escala X será una escala de bandas (band scale) para acomodar las categorías.
4.2. Escala Y
La escala Y será una escala lineal para los valores.
- Añadir Ejes
5.1. Eje X
Añadimos el eje X al gráfico.
svg.append("g")
.attr("class", "x-axis")
.attr("transform", `translate(0,${height})`)
.call(d3.axisBottom(x))
.selectAll(".tick text")
.attr("class", "axis-label");5.2. Eje Y
Añadimos el eje Y al gráfico.
svg.append("g")
.attr("class", "y-axis")
.call(d3.axisLeft(y))
.selectAll(".tick text")
.attr("class", "axis-label");
- Dibujar las Barras
Finalmente, dibujamos las barras utilizando los datos y las escalas definidas.
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", d => x(d.name))
.attr("y", d => y(d.value))
.attr("width", x.bandwidth())
.attr("height", d => height - y(d.value));
- Ejercicio Práctico
Ejercicio
Modifica el gráfico de barras para que:
- Las barras cambien de color al pasar el ratón por encima.
- Añade etiquetas de valor en la parte superior de cada barra.
Solución
1. Cambiar de color al pasar el ratón
Ya hemos añadido una clase .bar:hover en el CSS para cambiar el color al pasar el ratón.
2. Añadir etiquetas de valor
svg.selectAll(".label")
.data(data)
.enter().append("text")
.attr("class", "label")
.attr("x", d => x(d.name) + x.bandwidth() / 2)
.attr("y", d => y(d.value) - 5)
.attr("text-anchor", "middle")
.text(d => d.value);Conclusión
En esta lección, hemos aprendido a crear un gráfico de barras básico utilizando D3.js. Hemos cubierto desde la configuración inicial hasta la creación de escalas, ejes y la representación de los datos en forma de barras. Este conocimiento te servirá como base para crear visualizaciones más complejas y personalizadas en los siguientes módulos. ¡Sigue practicando y experimentando con diferentes conjuntos de datos y estilos!
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
