こんにちは、福薗です。
4月から5月にかけて、システムに関する研修を受けさせていただきました。
研修の最後に、学んだことの集大成として最終課題を製作したのですが、その中でレーダーチャートを組み込むシーンがありました。
ん?レーダーチャート…?
どうやって描けばいいんだ…?
そんな悩める私を助けてくれた便利システムが、ありました。
『Chart.js』
使い方を、ちゃーっと、説明したいと思います。
目次/このページでわかること
Chart.jsとは
様々なグラフを簡単に組み込むことができるJavaScriptです。
Chart.jsのTOPページへ
現在(2018年7月時点)での最新バージョンは2.7.2になります。
チャートの種類
Chart.jsは大きく分けて以下の8つのグラフを描写することができます。
・線グラフ
・棒グラフ
・レーダーチャート
・ドーナツと円グラフ
・鶏頭図
・バブルチャート
・散布図
・面グラフ
また、これらを複数組み合わせてグラフを描くこともできます。
Chart.jsの導入方法
まず、公式サイトにアクセスします。
TOPページからGitHubをのページに飛び、
「Clone or download」→「Download ZIP」を選択します。
ダウンロード後解凍し、プロジェクトに設置します。
<script src="Chart.js"></script>
②CDNで提供されているChart.jsを読み込む
下記サイトからCDNで提供されているChart.jsを読み込んでも導入することができます。
https://cdnjs.com/libraries/Chart.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js"></script>
※圧縮版(min)もあります。
Chart.jsの設置方法
Chart.jsはHTML5のcanvasを使って描写します。
描きたい場所に『canvasタグ』とJSで与える『id』、必要に応じて『width』と『height』を指定します。
<canvas id=“graph” width=“300px” height=“300px”></canvas>
これでHTML側の準備はOKです。
Chart.jsの処理の記述
いよいよチャートの内容を書いていきましょう。
それぞれの描きたいチャートのリファレンスを参照して基本的な形を描きます。
今回は実際に課題で使用したレーダーチャートを描きたいと思います。
<script>
$(function(){
var drawGraph = function(data){
var ctx = document.getElementById('graph').getContext('2d');
// データ1
var data1 = {
label:'今日 (%)',
data:data[1],
backgroundColor: "rgba(250, 50, 50, 0.3)",
borderColor: "rgba(200, 50, 50, 0.3)",
pointHoverBackgroundColor: "rgba(200, 50, 50, 0.3)",
pointHoverBorderColor: "rgba(200, 50, 50, 0.3)",
};
// データ2
var data2 = {
label:'昨日 (%)',
data:data[2],
backgroundColor: "rgba(50, 50, 250, 0.3)",
borderColor: "rgba(50, 50, 200, 0.3)",
pointHoverBackgroundColor: "rgba(50, 50, 200, 0.3)",
pointHoverBorderColor: "rgba(50, 50, 200, 0.3)",
}
// ラベル(横軸)
var label = data[0];
// データの設定
var config = {
type: 'radar', // グラフの種類(レーダーチャートを指定)
data: { labels: label, datasets: [data1, data2]},
// オプション設定
options: {
//凡例の設定
legend: {
position: 'left',
},
// レスポンシブ指定
responsive: true,
//スケールの設定
scale: {
pointLabels: {
fontSize: 15,
},
ticks: {
// 目盛り値のカスタマイズ
stepSize: 10,
// 最小値の値を0指定
beginAtZero:true,
min: 0,
// 最大値を指定
max: 100,
}
}
}
}
var myChartGraph = new Chart(ctx, config);
};
// ラベルの設定
var data = [['1群', '2群', '3群', '4群', '5群','6群'],
[44, 30, 43, 11, 70, 20],
[50, 30, 11, 89, 36, 55]]
drawGraph(data);
})
</script>
「//データの設定」の『type』で、チャートの種類を選びます。
レーダーチャートの場合は『radar』と設定します。
「//データ1」「//データ2」のように、反映させるデータを、それぞれどのように表示させるか設定し、「//データの設定」「//ラベルの設定」を行えば基本的な形が描写されます。
これに加えて、「//オプションの設定」にて詳細な描写の設定を行うことができます。
ここに記している他にもカスタマイズすることができるので、リファレンスをご参照ください。
http://www.chartjs.org/docs/latest/charts/radar.htmlhttps://misc.0o0o.org/chartjs-doc-ja/charts/radar.html(日本語)
ちなみに、オプションを反映させるコツはoptions、scale、ticksの順番で囲っていくことです。
私はこれが分からず、解決にとても時間がかかりました。
今回は「//ラベルの設定」に入っている数値がグラフに反映されますが、PHPでデータをもってきて動的なデータを反映させることもできます。
おわりに
以上、Chart.jsの使い方について語ってまいりました。
JavaScriptの扱いはまだまだ未熟な私ですが、そんな私でも扱うことのできる便利なツールです。
一方で、簡単なようですがカスタマイズ性もある、奥深いツールであるように思います。
これを機会にChart.jsを使いこなし、ちゃーっと、チャートを描けるようになりたいと思う今日この頃です。
今回はこの辺で、失礼します。