Chart.jsはWebサイトにグラフを表示することができる、便利なライブラリです。
グラフ表示用のライブラリは色々とありますが、Chart.jsは軽量で、高機能、安定していて、グラフのデザインも綺麗なのでおすすめです。もちろん、レスポンシブ対応です。
有名サイトや、アプリでもグラフ表示に使われているのを目にします。
使い方はシンプルで簡単です。グラフの色や軸のメモリ設定も自由に変更できます。
今回はChart.jsを使って、棒グラフ、折れ線グラフ、レーダーチャート、円グラフ(パイ型)、円グラフ(ドーナッツ型)を表示する方法を紹介します。
まずはこちらのサンプルをご覧ください。
棒グラフ
棒グラフ2
折れ線グラフ
折れ線グラフ2
レーダーチャート
円グラフ(パイ型)
円グラフ(ドーナッツ型)
実装方法
サンプルのグラフを実装する方法を紹介します。
今回使用するのは、Chart.jsの最新版、Version 2.0です。旧バージョンとは少し仕様が変わっているので注意してください。
ダウンロード
Chart.jsをダウンロードします。
右側の「Clone or download」から「Donwload ZIP」を選びます。
ファイルを解凍したら、「dist」フォルダに入っている「Chart.js」を使用します。今回使うのは、このファイルだけです。
JS
Chart.jsを読み込みます。
<script src="js/Chart.js"></script>
HTML(基本形)
<canvas>を用意します。基本となるHTMLはこれだけです。
<canvas id="myChart" width="800" height="400"></canvas>
グラフを描く(基本形)
</body>閉じタグの直前などで、スクリプトを実行してグラフを描きます。以下のコードが基本形になります(これをコピペしても動きません)。
<script> var ctx = document.getElementById("myChart"); var myChart= new Chart(ctx, { type: type, data: data, options: options }); </script>
typeにはグラフのタイプ、dataにはグラフのデータ、optionsには各種オプションを設定します。
それでは、この基本形をベースにして、棒グラフ、折れ線グラフ、レーダーチャート、円グラフ(パイ型)、円グラフ(ドーナッツ型)を描いていきます。
棒グラフ
基本的な棒グラフの作り方です。
HTML
<canvas>を用意します。
<canvas id="myBarChart" width="800" height="400"></canvas>
JS
棒グラフを描きます。
//棒グラフ var ctx = document.getElementById("myBarChart"); var myBarChart = new Chart(ctx, { //グラフの種類 type: 'bar', //データの設定 data: { //データ項目のラベル labels: ["1月", "2月", "3月", "4月", "5月", "6月"], //データセット datasets: [{ //凡例 label: "契約数", //背景色 backgroundColor: "rgba(75,192,192,0.4)", //枠線の色 borderColor: "rgba(75,192,192,1)", //グラフのデータ data: [12, 19, 3, 5, 2, 3] }] }, //オプションの設定 options: { //軸の設定 scales: { //縦軸の設定 yAxes: [{ //目盛りの設定 ticks: { //開始値を0にする beginAtZero:true, } }] } } });
解説
棒グラフを指定します。
- type: グラフの種類。棒グラフは「bar」
データセットは1セット、背景色などを指定します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > label 凡例
- datasets > backgroundColor 背景色
- datasets > borderColor 枠線の色
- datasets > data グラフのデータ
Y軸の開始値を0にしました。
- options
- scales 軸の設定
- scales > yAxes 縦軸の設定
- scales > yAxes > ticks 目盛りの設定
- scales > yAxes > ticks > beginAtZero 開始値を0にする
棒グラフ2
データセットが2つの棒グラフを作ります。
HTML
<canvas>を用意します。
<canvas id="myBar2Chart" width="800" height="400"></canvas>
JS
棒グラフを描きます。
//棒グラフ2 var ctx = document.getElementById("myBar2Chart"); var myBar2Chart = new Chart(ctx, { //グラフの種類 type: 'bar', //データの設定 data: { //データ項目のラベル labels: ["1月", "2月", "3月", "4月", "5月", "6月"], //データセット datasets: [ { //凡例 label: "1年目", //背景色 backgroundColor: "rgba(179,181,198,0.2)", //枠線の色 borderColor: "rgba(179,181,198,1)", //枠線の太さ borderWidth: 1, //背景色(ホバーしたときに) hoverBackgroundColor: "rgba(179,181,198,0.4)", //枠線の色(ホバーしたときに) hoverBorderColor: "rgba(179,181,198,1)", //グラフのデータ data: [12, 19, 3, 5, 2, 3] }, { //凡例 label: "2年目", //背景色 backgroundColor: "rgba(255,99,132,0.2)", //枠線の色 borderColor: "rgba(255,99,132,1)", //枠線の太さ borderWidth: 1, //背景色(ホバーしたときに) hoverBackgroundColor: "rgba(255,99,132,0.4)", //枠線の色(ホバーしたときに) hoverBorderColor: "rgba(255,99,132,1)", //グラフのデータ data: [15, 15, 6, 8, 5, 6] } ] }, //オプションの設定 options: { //軸の設定 scales: { //縦軸の設定 yAxes: [{ //目盛りの設定 ticks: { //開始値を0にする beginAtZero:true, } }] }, //ホバーの設定 hover: { //ホバー時の動作(single, label, dataset) mode: 'single' } } });
解説
棒グラフを指定します。
- type: グラフの種類。棒グラフは「bar」
データセットは2セット、背景色や、マウスホバーしたときのスタイルなどを指定します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > label 凡例
- datasets > backgroundColor 背景色
- datasets > borderColor 枠線の色
- datasets > borderWidth 枠線の太さ
- datasets > hoverBackgroundColor 背景色(ホバーしたときに)
- datasets > hoverBorderColor 枠線の色(ホバーしたときに)
- datasets > data グラフのデータ
Y軸の開始値を0にしました。また、棒グラフにマウスホバーした際の動作を「single」にして、それぞれの棒グラフごとにホバー表示するようにしました。
- options
- scales 軸の設定
- scales > yAxes 縦軸の設定
- scales > yAxes > ticks 目盛りの設定
- scales > yAxes > ticks > beginAtZero 開始値を0にする
- hover ホバーの設定
- hover > mode ホバー時の動作(single, label, datasetから選択)
折れ線グラフ
折れ線グラフを作ります。
HTML
<canvas>を用意します。
<canvas id="myLineChart" width="800" height="400"></canvas>
JS
折れ線グラフを描きます。
//折れ線グラフ var ctx = document.getElementById("myLineChart"); var myLineChart = new Chart(ctx, { //グラフの種類 type: 'line', //データの設定 data: { //データ項目のラベル labels: ["1月", "2月", "3月", "4月", "5月", "6月"], //データセット datasets: [{ //凡例 label: "契約数", //背景色 backgroundColor: "rgba(75,192,192,0.4)", //枠線の色 borderColor: "rgba(75,192,192,1)", //グラフのデータ data: [12, 19, 3, 5, 2, 3] }] }, //オプションの設定 options: { scales: { //縦軸の設定 yAxes: [{ ticks: { //最小値を0にする beginAtZero: true } }] } } });
解説
折れ線グラフを指定します。
- type: グラフの種類。折れ線グラフは「line」
データセットは1セット、背景色などを指定します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > label 凡例
- datasets > backgroundColor 背景色
- datasets > borderColor 枠線の色
- datasets > data グラフのデータ
Y軸の開始値を0にしました。
- options
- scales 軸の設定
- scales > yAxes 縦軸の設定
- scales > yAxes > ticks 目盛りの設定
- scales > yAxes > ticks > beginAtZero 開始値を0にする
折れ線グラフ2
データセットが2つの折れ線グラフを作ります。
HTML
<canvas>を用意します。
<canvas id="myLine2Chart" width="800" height="400"></canvas>
JS
折れ線グラフを描きます。
//折れ線グラフ2 var ctx = document.getElementById("myLine2Chart"); var myLine2Chart = new Chart(ctx, { //グラフの種類 type: 'line', //データの設定 data: { //データ項目のラベル labels: ["1月", "2月", "3月", "4月", "5月", "6月"], //データセット datasets: [ { //凡例 label: "1年目", //面の表示 fill: false, //線のカーブ lineTension: 0, //背景色 backgroundColor: "rgba(179,181,198,0.2)", //枠線の色 borderColor: "rgba(179,181,198,1)", //結合点の枠線の色 pointBorderColor: "rgba(179,181,198,1)", //結合点の背景色 pointBackgroundColor: "#fff", //結合点のサイズ pointRadius: 5, //結合点のサイズ(ホバーしたとき) pointHoverRadius: 8, //結合点の背景色(ホバーしたとき) pointHoverBackgroundColor: "rgba(179,181,198,1)", //結合点の枠線の色(ホバーしたとき) pointHoverBorderColor: "rgba(220,220,220,1)", //結合点より外でマウスホバーを認識する範囲(ピクセル単位) pointHitRadius: 15, //グラフのデータ data: [12, 19, 3, 5, 2, 3] }, { //凡例 label: "2年目", //面の表示 fill: false, //線のカーブ lineTension: 0, //背景色 backgroundColor: "rgba(75,192,192,0.4)", //枠線の色 borderColor: "rgba(75,192,192,1)", //結合点の枠線の色 pointBorderColor: "rgba(75,192,192,1)", //結合点の背景色 pointBackgroundColor: "#fff", //結合点のサイズ pointRadius: 5, //結合点のサイズ(ホバーしたとき) pointHoverRadius: 8, //結合点の背景色(ホバーしたとき) pointHoverBackgroundColor: "rgba(75,192,192,1)", //結合点の枠線の色(ホバーしたとき) pointHoverBorderColor: "rgba(220,220,220,1)", //結合点より外でマウスホバーを認識する範囲(ピクセル単位) pointHitRadius: 10, //グラフのデータ data: [15, 15, 6, 8, 5, 6] } ] }, //オプションの設定 options: { //軸の設定 scales: { //縦軸の設定 yAxes: [{ //目盛りの設定 ticks: { //最小値を0にする beginAtZero: true } }] }, //ホバーの設定 hover: { //ホバー時の動作(single, label, dataset) mode: 'single' } } });
解説
折れ線グラフを指定します。
- type: グラフの種類。折れ線グラフは「line」
データセットは2セットです。折れ線グラフの面は表示せず、線のみの表示にしました。また、線のカーブを無くし、曲線ではなく、真っ直ぐな直線にしました。その他に、背景色や、結合点にマウスホバーしたときのスタイルなどを指定します。結合点にマウスホバーした際にツールチップが表示されますが、「pointHitRadius」を指定しておくと、マウスホバーを認識する範囲が結合点の周りまで広がり、ユーザビリティーが向上します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > label 凡例
- datasets > fill 面の表示
- datasets > lineTension 線のカーブ
- datasets > backgroundColor 背景色
- datasets > borderColor 枠線の色
- datasets > pointBorderColor 結合点の枠線の色
- datasets > pointBackgroundColor 結合点の背景色
- datasets > pointRadius 結合点のサイズ
- datasets > pointHoverRadius 結合点のサイズ(ホバーしたとき)
- datasets > pointHoverBackgroundColor 結合点の背景色(ホバーしたとき)
- datasets > pointHoverBorderColor 結合点の枠線の色(ホバーしたとき)
- datasets > pointHitRadius 結合点より外でマウスホバーを認識する範囲(ピクセル単位)
- datasets > data グラフのデータ
Y軸の開始値を0にしました。また、結合点にマウスホバーした際の動作を「single」にして、それぞれの結合点ごとにホバー表示するようにしました。
- options
- scales 軸の設定
- scales > yAxes 縦軸の設定
- scales > yAxes > ticks 目盛りの設定
- scales > yAxes > ticks > beginAtZero 開始値を0にする
- hover ホバーの設定
- mode > hover ホバー時の動作(single, label, datasetから選択)
レーダーチャート
データセットが2つのレーダーチャートを作ります。
HTML
<canvas>を用意します。
<canvas id="myRadarChart" width="600" height="600"></canvas>
JS
レーダーチャートを描きます。
//レーダーチャート var ctx = document.getElementById("myRadarChart"); var myRadarChart = new Chart(ctx, { //グラフの種類 type: 'radar', //データの設定 data: { //データ項目のラベル labels: ["デザイン", "オリジナリティ", "コンテンツ", "アクセサビリティ", "写真", "文章力", "ブランド"], //データセット datasets: [ { //凡例 label: "A社", //背景色 backgroundColor: "rgba(179,181,198,0.2)", //枠線の色 borderColor: "rgba(179,181,198,1)", //結合点の背景色 pointBackgroundColor: "rgba(179,181,198,1)", //結合点の枠線の色 pointBorderColor: "#fff", //結合点の背景色(ホバーしたとき) pointHoverBackgroundColor: "#fff", //結合点の枠線の色(ホバーしたとき) pointHoverBorderColor: "rgba(179,181,198,1)", //結合点より外でマウスホバーを認識する範囲(ピクセル単位) hitRadius: 5, //グラフのデータ data: [65, 59, 90, 81, 56, 55, 40] }, { //凡例 label: "B社", //背景色 backgroundColor: "rgba(255,99,132,0.2)", //枠線の色 borderColor: "rgba(255,99,132,1)", //結合点の背景色 pointBackgroundColor: "rgba(255,99,132,1)", //結合点の枠線の色 pointBorderColor: "#fff", //結合点の背景色(ホバーしたとき) pointHoverBackgroundColor: "#fff", //結合点の枠線の色(ホバーしたとき) pointHoverBorderColor: "rgba(255,99,132,1)", //結合点より外でマウスホバーを認識する範囲(ピクセル単位) hitRadius: 5, //グラフのデータ data: [28, 48, 40, 19, 96, 27, 100] } ] } });
解説
レーダーチャートを指定します。
- type: グラフの種類。レーダーチャートは「radar」
データセットは2セットです。背景色や、結合点にマウスホバーしたときのスタイルなどを指定します。結合点にマウスホバーした際にツールチップが表示されますが、「pointHitRadius」を指定しておくと、マウスホバーを認識する範囲が結合点の周りまで広がり、ユーザビリティーが向上します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > label 凡例
- datasets > backgroundColor 背景色
- datasets > borderColor 枠線の色
- datasets > pointBorderColor 結合点の枠線の色
- datasets > pointBackgroundColor 結合点の背景色
- datasets > pointHoverBackgroundColor 結合点の背景色(ホバーしたとき)
- datasets > pointHoverBorderColor 結合点の枠線の色(ホバーしたとき)
- datasets > pointHitRadius 結合点より外でマウスホバーを認識する範囲(ピクセル単位)
- datasets > data グラフのデータ
円グラフ(パイ型)
パイ型の円グラフを作ります。
HTML
<canvas>を用意します。
<canvas id="myPieChart" width="400" height="400"></canvas>
JS
パイ型の円グラフを描きます。
//円グラフ(パイ型) var ctx = document.getElementById("myPieChart"); var myPieChart = new Chart(ctx, { //グラフの種類 type: 'pie', //データの設定 data: { //データ項目のラベル labels: ["Red", "Green", "Yellow"], //データセット datasets: [{ //背景色 backgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], //背景色(ホバーしたとき) hoverBackgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], //グラフのデータ data: [300, 50, 100] }] } });
解説
パイ型の円グラフを指定します。
- type: グラフの種類。パイ型の円グラフは「pie」
データセットは1セットです。背景色や、マウスホバーしたときの背景色を指定します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > backgroundColor 背景色
- datasets > hoverBackgroundColor 背景色(ホバーしたとき)
- datasets > data グラフのデータ
円グラフ(ドーナッツ型)
ドーナッツ型の円グラフを作ります。
HTML
<canvas>を用意します。
<canvas id="myDoughnutChart" width="400" height="400"></canvas>
JS
ドーナッツ型の円グラフを描きます。
//円グラフ(ドーナッツ型) var ctx = document.getElementById("myDoughnutChart"); var myDoughnutChart = new Chart(ctx, { //グラフの種類 type: 'doughnut', //データの設定 data: { //データ項目のラベル labels: ["Red", "Green", "Yellow"], //データセット datasets: [{ //背景色 backgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], //背景色(ホバーしたとき) hoverBackgroundColor: [ "#FF6384", "#36A2EB", "#FFCE56" ], //グラフのデータ data: [300, 50, 100] }] },options: { //アニメーションの設定 animation: { //アニメーションの有無 animateRotate: false } } });
解説
ドーナッツ型の円グラフを指定します。
- type: グラフの種類。ドーナッツ型の円グラフは「doughnut」
データセットは1セットです。背景色や、マウスホバーしたときの背景色を指定します。
- data
- labels データ項目のラベル
- datasets データセット
- datasets > backgroundColor 背景色
- datasets > hoverBackgroundColor 背景色(ホバーしたとき)
- datasets > data グラフのデータ
グラフを表示する際の描画アニメーションを無しにしました。
- options
- animation アニメーションの設定
- animation > animateRotate アニメーションの有無
以上、棒グラフ、折れ線グラフ、レーダーチャート、円グラフ(パイ型)、円グラフ(ドーナッツ型)の作り方でした。
他にも、様々なオプションを指定することができます。より詳しいオプションについては、公式サイトのドキュメントをご覧ください。