Chart.js で直線や曲線のグラフを作るサンプルや基本的なプロパティの解説。
Chart.js で線グラフを描くとVer.2系(以下v2)ではデフォルトは曲線だったが、Ver.3系(以下v3)から直線になった。 ここでは、バージョンごとの書き方の違いを含めて説明する。
まず簡単なサンプルコードを以下に記す。
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/Chart.min.js"></script>
<style>
#ex_chart {max-width:640px;max-height:480px;}
</style>
<canvas id="ex_chart"></canvas>
<script>
var ctx = document.getElementById('ex_chart');
var data = {
labels: ["1月", "2月", "3月", "4月", "5月"],
datasets: [{
label: 'プリンター販売台数',
data: [880, 740, 900, 520, 930],
borderColor: 'rgba(255, 100, 100, 1)'
}]
};
var options = {};
var ex_chart = new Chart(ctx, {
type: 'line',
data: data,
options: options
});
</script>
分かりやすいようにかなりシンプルにしてある。 赤字の部分は、後述のサンプルで変更を加えていく箇所。 data と options は Chart 関数内に書いても良いが、個別に定義した方がデータが扱いやすいかもしれない。 borderColor は線の色の指定で、rgba() のほか、#f90 や green など CSS の表記が使える。
以下表示例。
v2との違いは以下の通り。
v3でこれらを有効にしたい場合もある。 また、縦軸(Y)は自動的に目盛りをふってくれるが、0(ゼロ)や任意の値に変えたい。 これらの変更を加えたコードが以下となる。 変数 data と options 以外は同じなので省略する(以下全て同様)。
var data = { labels: ["1月", "2月", "3月", "4月", "5月"], datasets: [{ label: 'プリンター販売台数', data: [880, 740, 900, 520, 930], borderColor: 'rgba(255, 100, 100, 1)', lineTension: 0.3, fill: true, borderWidth: 3 }] }; var options = { scales: { y:{ min: 300 //beginAtZero: true } } };
data のプロパティには以下を追加した。
options のプロパティには以下を追加した。
そして以下のような滑らかなカーブを描く曲線グラフができる。
なお、x軸、y軸のオプション指定方法もv3から変更になっている。 v2では以下のように記述していた。
var options = { scales: { yAxes: [{ ticks: { min: 300 } }] } };
v2の記法のままだと設定が反映されなかったり、後述するラベルが表示されない等の不具合が生じる。
グラフをいじっているとやりたいことが増えていく。 特に縦軸は数字しかないので分かりやすいように、文字を追加したり、ラベルを付けたい。 変更箇所のみ以下に記す。
var data = { labels: ["1月", "2月", "3月", "4月", "5月"], datasets: [{ label: 'プリンター', data: [880, 740, 900, 520, 930], borderColor: 'rgba(255, 100, 100, 1)', lineTension: 0, fill: false, borderWidth: 3 }] }; var options = { scales: { x:{ display: true, title:{ display: true, text: '月' } }, y:{ display: true, min: 300, title:{ display: true, text: '台数' }, ticks: { callback: function(value, index, ticks) { return value + '台'; } } }, }, plugins: { title: { display: true, text: '販売台数' } } };
options のプロパティには以下を追加した。
このサンプルのように callback 関数を使って目盛りの数値に文字列を追加することができる。 ラベルに「台数」と書いたので数値だけでも良いが、こういうこともできるということで例として書いた。
そして以下のような折れ線グラフになる。
以下はv2の記法。 だいぶ変更されており、このままではv3では表示されない。
var options = { scales: { xAxes: [{ scaleLabel: { display: true, labelString: '月' } }], yAxes: [{ ticks: { min: 300, userCallback: function(tick) { return tick.toString() + '台'; } }, scaleLabel: { display: true, labelString: '台数' } }] }, title: { display: true, text: '販売台数' } };
data の datasets にデータを増やすごとにグラフの線は増えていく。 options は上記と同じなので省略。
var data = { labels: ["1月", "2月", "3月", "4月", "5月"], datasets: [{ label: 'プリンター', data: [880, 740, 900, 520, 930], borderColor: 'rgba(255, 100, 100, 1)', lineTension: 0, fill: false, borderWidth: 3 }, { label: 'パソコン', data: [1200, 1350, 1220, 1220, 1420], borderColor: 'rgba(100, 100, 255, 1)', lineTension: 0, fill: false, borderWidth: 3 }] };
表示例は以下の通り。
これで Chart.js を使って基本的な曲線や折れ線グラフが描けるだろう。