javascript-chartjs

Añade gráficas a tu web fácilmente con JavaScript y Chart.js

Chart.js es una de las biblioteca de JavaScript más conocidas y populares para la creación de gráficas y visualizaciones de datos interactivas, de manera simple y flexible.

Su diseño está centrado tanto en ser fácil de usa, como en ofrecer una amplia gama de opciones para personalizar gráficos. Permite crear varios tipos de gráficos, como barras, líneas, pastel y radar, entre otros.

Chart.js es Open Source, y se basa en HTML5 Canvas para dibujar los gráficos en la página web. Por ejemplo, aquí tenéis un gráfico creado con Chart.js

Algunas de las características de Chart.js

  • Soporte para varios tipos de gráficos: Incluye gráficos de líneas, barras, tortas, radar, burbuja, polar, y más.
  • Interactividad: Los gráficos son interactivos por defecto, con funcionalidades como tooltips y leyendas.
  • Animaciones: Los gráficos pueden ser animados durante su renderización.
  • Configuración flexible: Permite una personalización detallada de los estilos, colores y comportamientos de los gráficos.
  • Escalabilidad: Compatible con diferentes tamaños de pantalla y dispositivos.

Instalación de Chart.js

Para comenzar a usar Chart.js en nuestros proyectos, primero debemos instalarlo. Si utilizamos npm, podemos instalar Chart.js con el siguiente comando:

npm install chart.js

Alternativamente, podemos incluir Chart.js directamente en nuestro HTML mediante una etiqueta <script>:

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

Cómo usar Chart.js

Añadir el elemento al HTML

En primer lugar, tenemos que añadir el contenedor donde Chart.js renderizará el gráfico. Para estos ejemplos lo haremos así

<canvas id="myChart" width="400" height="200"></canvas>

Creación de un gráfico de líneas

const ctx = document.getElementById('myChart').getContext('2d');
const myLineChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
    datasets: [{
      label: 'Monthly Sales',
      data: [10, 20, 15, 30, 25, 40, 35],
      borderColor: 'rgba(75, 192, 192, 1)',
      backgroundColor: 'rgba(75, 192, 192, 0.2)',
      fill: true
    }]
  },
  options: {
    responsive: true,
    plugins: {
      legend: {
        position: 'top'
      },
      tooltip: {
        callbacks: {
          label: function(tooltipItem) {
            return `Sales: $${tooltipItem.raw}`;
          }
        }
      }
    }
  }
});

Creación de un Gráfico de Barras

El siguiente ejemplo muestra cómo crear un gráfico de barras.

const ctx = document.getElementById('myChart').getContext('2d');
const myBarChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
    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
    }]
  },
  options: {
    responsive: true,
    plugins: {
      legend: {
        position: 'top'
      },
      tooltip: {
        callbacks: {
          label: function(tooltipItem) {
            return `Votes: ${tooltipItem.raw}`;
          }
        }
      }
    },
    scales: {
      y: {
        beginAtZero: true
      }
    }
  }
});

Creación de un gráfico de circular

Para representar datos proporcionales, podemos usar un gráfico de circular.

const ctx = document.getElementById('myChart').getContext('2d');
const myPieChart = new Chart(ctx, {
  type: 'pie',
  data: {
    labels: ['Red', 'Blue', 'Yellow'],
    datasets: [{
      label: 'My First Dataset',
      data: [300, 50, 100],
      backgroundColor: [
        'rgba(255, 99, 132, 0.2)',
        'rgba(54, 162, 235, 0.2)',
        'rgba(255, 206, 86, 0.2)'
      ],
      borderColor: [
        'rgba(255, 99, 132, 1)',
        'rgba(54, 162, 235, 1)',
        'rgba(255, 206, 86, 1)'
      ],
      borderWidth: 1
    }]
  },
  options: {
    responsive: true,
    plugins: {
      legend: {
        position: 'top'
      },
      tooltip: {
        callbacks: {
          label: function(tooltipItem) {
            return `Value: ${tooltipItem.raw}`;
          }
        }
      }
    }
  }
});