Categories
Chart.js

Getting Started with Chart.js

Spread the love

We can make creating charts on a web page easy with Chart.js.

In this article, we’ll look at how to create charts with Chart.js.

Installation

We can add the Chart.js library from CDN.

To do that, we write:

<script src='https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js'></script>

in our HTML.

Also, we can install the NPM package version by running:

npm install chart.js --save

The Bower package can be installed by running:

bower install chart.js --save

Creating a Chart

We can then create a chart by creating our canvas element:

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

And then we can add our JavaScript code for the graph:

var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ['Red', 'Blue', 'Yellow'],
    datasets: [{
      label: '# of Votes',
      data: [12, 19, 3],
      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: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});

We get the canvas element’s context.

Then we use the Chart constructor to create our chart.

type has the chart type.

label has the legend label.

The labels property has the x-axis labels.

datasets has the data for the chart.

data has the y-axis cooredinates.

backgroundColor has the background color for the bars.

borderColor has the border color for the bars.

borderWidth has the border width.

options has some options for the graph.

scales has the graph scales.

We have the beginAtZero option set to true so that the y-axis starts at 0.

Accessible Charts

We can make our charts accessible with the aria-label and role attributes.

For example, we can write:

<canvas id="myChart" width="400" height="400" aria-label="bar chart" role="img"></canvas>

We can add fallback content with:

<canvas id="myChart" width="400" height="400" aria-label="bar chart" role="img">
  <p>fallback</p>
</canvas>

Responsive Charts

Charts can be made responsive with a wrapper element.

We style that remove the height and width from the canvas and put that in the wrapper element.

For instance, we can write:

<div class="chart-container" style="position: relative; height:40vh; width:80vw">
  <canvas id="myChart"></canvas>
</div>

We put the styles in the div instead of the canvas.

Now the chart should resize when we resize the screen.

The chart can also be programmatically resized:

var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ['Red', 'Blue', 'Yellow'],
    datasets: [{
      label: '# of Votes',
      data: [12, 19, 3],
      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: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});

myChart.canvas.parentNode.style.height = '428px';
myChart.canvas.parentNode.style.width = '428px';

We changed the canvas’ parent node’s height and width.

Conclusion

We can create a simple chart with Chart.js with some JavaScript code.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *