En programacion.net os hemos hablado en muchas ocasiones sobre librerÃas para crear gráficos de todo tipo, pero en este artÃculo os hablaremos de la más popular de todas: Chart.js. Y es que esta librerÃa de Javascript es muy fácil de utilizar, y por eso suele ser la opción predilecta para muchos desarrolladores. Pero entrando en materia, ¿para qué sirven esta clase de librerÃas? Las librerÃas de gráficos, como su propio nombre indica, generan distintos tipos de gráficos para representar datos en base a una información dada, ya sea en forma de fichero externo, o en forma de query. Esto es increÃblemente útil sobre todo en backoffices y en zonas privadas donde se hace un tratamiento de los datos más exigentes. En dichos entornos se suelen mostrar los datos de manera más gráfica a los usuarios para que sean más entendibles.
Asà pues, vamos a ver cómo crear gráficos de todo tipo mediante Javascript con la librerÃa Chart.js.
Instalación
Lo primero que tienes que hacer es descargarte la librerÃa a través de su GitHub o bien llamarla vÃa CDN. Una vez incluÃda la librerÃa, podemos comenzar con el código.
Uso
Para utilizar Chart.js tenemos que declarar un elemento canvas donde se representará el gráfico a mostrar. Asà que, lo declararemos tal que asÃ:
<canvas id="myChart" width="500" height="500"></canvas>
Como veis, nuestro canvas tendrá una dimensión de 500 pÃxeles de ancho por 500 pÃxeles de alto.
Ahora vamos a convertir nuestro canvas en un gráfico hecho y derecho. Para ello, abrimos un script y declaramos:
var ctx = document.getElementById('myChart').getContext('2d');
Con esto referenciamos nuestro canvas en la variable ctx, la cual, tendremos que pasar como parámetro en la declaración del objeto Chart.
La clase Chart cuenta con muchas propiedades. Entre otras:
- type: Para el tipo de gráfico que queremos mostrar
- datasets: Información a mostrar en el gráfico
- label: Nombre del gráfico
- data: Datos a representar.
- backgroundColor: Color de fondo de cada uno de los datos a representar, en el mismo orden.
- borderColor: Color del borde de cada uno de los datos a representar, en el mismo orden.
- borderWidth: Ancho del borde de cada uno de los datos a representar.
Una vez visto todo esto, este serÃa el código para mostrar un gráfico de barras:
type: 'bar', data: { labels: ['Iron Man', 'Capitan America', 'Hulk', 'Thor', 'Viuda Negra', 'Ojo de Halcon'], datasets: [{ label: '# of Votes', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] },
Si quieres mostrar un gráfico de lÃneas, el valor del tipo tendrÃa que ser 'line', y si por el contrario quieres un gráfico de sectores o tarta, debes utilizar el valor 'pie'.
En resumen, el código necesario para mostrar un gráfico de barras con Chart.js serÃa tal que asÃ:
<canvas id="myChart" width="500" height="500"></canvas> <script> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels: ['Iron Man', 'Capitan America', 'Hulk', 'Thor', 'Viuda Negra', 'Ojo de Halcon'], datasets: [{ label: '# de votos', data: [12, 19, 3, 5, 2, 3], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero: true } }] } } }); </script>
Y hasta aquà nuestro artÃculo sobre Chart.js, sin duda alguna una de las librerÃas JS de gráficos más popular entre la comunidad de desarrolladores. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. ¡Nos leemos!