JS | Chart.jsを使って色んな形のチャートを簡単に作成する方法

Chart.jsは様々な形式のチャート、グラフを簡単に描画することのできるJavascriptのライブラリです。
今回はそんなチャート作成には欠かせないChart.jsの導入方法や、チャートの描画方法などを説明したいと思います。

    もくじ

  1. 導入方法
  2. チャートの書き方
  3. まとめ

導入方法

CDNの取得

https://www.jsdelivr.com/package/npm/chart.jsにアクセスします。
「INSTALL」にある、scriptタグのリンクをコピーします。
chart.js CDN 今回は現時点(2023-03-29)の最新version、4.2.1を利用したいと思います。
https://cdn.jsdelivr.net/npm/chart.js/から、古いversionのChart.jsを利用することも可能です。
chart.js CDN version change

Code:

// Version 4.2.1 Chart.js
<script src="
https://cdn.jsdelivr.net/npm/chart.js@4.2.1/dist/chart.umd.min.js
"></script>

サンプルチャートの描画

どのようなチャートが作りたいなど色々あるとは思いますが、段階的な動作確認は常に必要なので、まずはサンプルチャートを描画してみましょう。
https://www.chartjs.org/docs/latest/getting-started/にアクセスします。
下部に書かれたサンプルと、先ほど取得したCDNを読み込みます。

Code:

<!-- 表示するcanvas領域 -->
<div>
  <canvas id="myChart"></canvas>
</div>

<!-- Chart.js -->
<script src="
https://cdn.jsdelivr.net/npm/chart.js@4.2.1/dist/chart.umd.min.js
"></script>

<!-- chart設定 -->
<script>
  const ctx = document.getElementById('myChart');

  new Chart(ctx, {
    type: 'bar',
    data: {
      labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
      datasets: [{
        label: '# of Votes',
        data: [12, 19, 3, 5, 2, 3],
        borderWidth: 1
      }]
    },
    options: {
      scales: {
        y: {
          beginAtZero: true
        }
      }
    }
  });
</script>
chart.js bar chart
上記のような棒グラフが表示されれば成功です。
表示されない場合は、ブラウザのコンソールからエラーの内容を確認しましょう。
Javascriptのライブラリは、他のライブラリと干渉し、エラーとなる可能性があるので、動作確認は最小の構成(CSS、JS、余計なものを読み込まない)で行いましょう。

チャートの書き方

利用できるチャートの種類

https://www.chartjs.org/docs/latest/samples/information.htmlで様々なチャートのサンプルを確認することができます。

上記のグラフやチャートを複合したグラフを作成することも可能です。
他にも専用のプラグインを読み込むことによって、様々なカスタマイズなども簡単に行えます。

サンプルを利用して円グラフを描く

サンプルを利用して円グラフを書いてみます。
コードのベースは先ほど使用した、サンプルチャートを使いたいと思います。
chart.js chart sample code

Code:

<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js@3.7.1/dist/chart.min.js"></script>
<!-- 表示するcanvas領域 -->
<canvas id="myChart" width="400" height="400"></canvas>
<!-- chart設定 -->
<script>
const ctx = document.getElementById('myChart').getContext('2d');

// Setupタブのコード
const DATA_COUNT = 5;
const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};

const data = {
	labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
	datasets: [
		{
			label: 'Dataset 1',
			/**
			 * 始めに利用したサンプルチャートのデータを拝借
			 */
			data: [12, 19, 3, 5, 2, 3],
			// data: Utils.numbers(NUMBER_CFG),
			/**
			 * 見やすくするための色指定
			 */
			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)'
			],
			// backgroundColor: Object.values(Utils.CHART_COLORS),
		}
	]
};

// Configタブのコード
const config = {
	type: 'pie',
	data: data,
	options: {
		responsive: true,
		plugins: {
			legend: {
				position: 'top',
			},
			title: {
				display: true,
				text: 'Chart.js Pie Chart'
			}
		}
	},
};

// Actionsタブのコード 今回使いません

const myChart = new Chart(ctx, config);
</script>
サンプルコードでは、Utilsと言う、Chart.js専用のライブラリを使用しているため、そのままではエラーとなってしまい描画されません。
Utilsページを参考に、サンプルをそのまま利用することも可能です。
今回は、始めに利用したサンプルチャートのデータを再利用してサンプルチャートを作成しています。
chart.js pie chart

サンプルを利用して線グラフを描く

サンプルを利用して線グラフを書いてみます。
コードのベースは先ほど使用した、円グラフを使いたいと思います。

Code:

<script>
const ctx = document.getElementById('myChart').getContext('2d');

const data = {
	labels: ['Red', 'Orange', 'Yellow', 'Green', 'Blue'],
	datasets: [
		{
			label: 'Dataset 1',
			data: [12, 19, 3, 5, 2, 3],
			// data: Utils.numbers(NUMBER_CFG),
			borderColor: 'rgba(255, 99, 132, 0.2)',
			// borderColor: Utils.CHART_COLORS.red,
			backgroundColor: 'rgba(255, 99, 132, 0.2)',
			// backgroundColor: Utils.transparentize(Utils.CHART_COLORS.red, 0.5),
		},
		{
			label: 'Dataset 2',
			data: [5, 11, 12, 16, 3, 9],
			borderColor: 'rgba(54, 162, 235, 0.2)',
			backgroundColor: 'rgba(54, 162, 235, 0.2)',
		}
	]
};

const config = {
	type: 'line',
	data: data,
	options: {
		responsive: true,
		plugins: {
			legend: {
				position: 'top',
			},
			title: {
				display: true,
				text: 'Chart.js Line Chart'
			}
		}
	},
};

const myChart = new Chart(ctx, config);
</script>
config.typeを、「pie」から「line」に変更するだけで、円グラフから線グラフへと変更することが出来ます。簡単で素晴らしいですね!
datasets」に新しくデータを追加すれば、簡単にラインも増やせます。難しいことは何もなし!素晴らしいですね!
chart.js line chart

注意点

Chart.jsは長らく開発が進められており、リリースされているversionも多岐に渡ります。
versionが違うと動くものも動かなくなってしまうので注意が必要です。
とくに、3.xx系と、2.xx系では、configの指定の仕方など、変更点が多いです。
常に改良されているはずなので、古いversionのサンプルしか見つからなかったと横着せず、新しいversionを利用するようにしましょう。

まとめ

今回は「Chart.js」を利用して、チャートを書く方法を紹介しました。
導入も簡単で、動作も軽快、一度使い方を覚えてしまえば様々なチャートを簡単に描写ができ、外部プラグインも豊富で、商用利用OK、と素晴らしいこと尽くめなので僕もよく利用しています。
サイト内にチャートを導入する際は利用してみてください!