今回はHTML5のCanvasを使ってグラフを描いてくれるjavascriptライブラリ、『Chart.js』をご紹介します。
Chart.js| HTML5 Charts for your website.
詳しいことはドキュメンテーション(英語)が用意されているので、そちらを読んでいただければと思います。
今回は実際にchart.jsでチャートを表示してみるところまでやってみます。
Chart.js導入方法
上記のリンクからchart.jsをダウンロード後、ヘッダーでjavascriptを読み込んでやります。
Chart.jsとChart.min.jsがありますが、minがついている方は圧縮版(タブや改行をなくしたもの)です。
どちらを使っても問題ありません。
<script src="Chart.js"></script>
ソースを書いてみよう
まず、HTML上にチャートの描画エリアを作成してやります。
<canvas id="chart1" width="400" height="400"></canvas>
次に以下のコードを追加します。
説明はコメントアウトで。
//jQueryの場合
var ctx = $("#chart1").get(0).getContext("2d");
//普通のjavascriptの場合
//var ctx = document.getElementById("chart1").getContext("2d");
var data = {
//X軸のラベル
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
//1つ目のグラフの描画設定
fillColor : "rgba(220,220,220,0.5)",//面の色・透明度
strokeColor : "rgba(220,220,220,1)",//線の色・透明度
pointColor : "rgba(220,220,220,1)", //点の色・透明度
pointStrokeColor : "#fff",//点の周りの色
data : [65,59,90,81,56,55,40]//labelごとのデータ
},
{
//2つ目のグラフの描画設定
fillColor : "rgba(151,187,205,0.5)",
strokeColor : "rgba(151,187,205,1)",
pointColor : "rgba(151,187,205,1)",
pointStrokeColor : "#fff",
data : [65,59,90,81,56,55,40]
}
]
}
var option = {
//Boolean - 縦軸の目盛りの上書き許可
scaleOverride : true,
//** ↑がtrueの場合 **
//Number - 目盛りの間隔
scaleSteps : 6,
//Number - 目盛り区切りの間隔
scaleStepWidth : 10,
//Number - 目盛りの最小値
scaleStartValue : 100,
//String - 目盛りの線の色
scaleLineColor : "rgba(0,0,0,.1)",
//Number - 目盛りの線の幅
scaleLineWidth : 10,
//Boolean - 目盛りを表示するかどうか
scaleShowLabels : true,
//String - 目盛りのフォント
scaleFontFamily : "'Arial'",
//Number - 目盛りのフォントサイズ
scaleFontSize : 10,
//String - 目盛りのフォントスタイル bold→太字
scaleFontStyle : "normal",
//String - 目盛りのフォント
scaleFontColor : "#666",
///Boolean - チャートの背景にグリッドを描画するか
scaleShowGridLines : true,
//String - チャート背景のグリッド色
scaleGridLineColor : "rgba(0,0,0,.05)",
//Number - チャート背景のグリッドの太さ
scaleGridLineWidth : 1,
//Boolean - 線を曲線にするかどうか。falseで折れ線になる
bezierCurve : true,
//Boolean - 点を描画するか
pointDot : true,
//Number - 点の大きさ
pointDotRadius : 3,
//Number - 点の周りの大きさ
pointDotStrokeWidth : 1,
//Number - 線の太さ
datasetStrokeWidth : 2,
//Boolean - アニメーションの有無
animation : true,
//Number - アニメーションの早さ(大きいほど遅い)
animationSteps : 60,
//Function - アニメーション終了時の処理
onAnimationComplete : null
}
//グラフを描画する
var myNewChart = new Chart(ctx).Line(data,option);
//optionは無くても描画可能
//var myNewChart = new Chart(ctx).Line(data);
たったこれだけで描画ができてしまいます。
複雑そうに見えて意外と簡単ですね。
動作サンプル
サンプルはこちら!
chart.jsのサンプルを適当に作ってみた
2つのチャートのうち一つは固定値、もう一つは値をいじれるようにしてみました。
さりげなくinput type=”number”を使っていますw
chartjsは他にも様々な種類のチャートを描画することができます!
値の受け渡しや設定も楽にできるので是非使ってみてください!


コメント
data : [65,59,90,81,56,55,40]//labelごとのデータ
このデータは配列でしょうか?
文字データではなく数値を使うのでしょうか?
毛ヴィンさん
コメントありがとうございます。
[]なので配列形式ですね。
dataはグラフの数値に使用するデータなので、数値を使います
ありがとうございました!
棒グラフに、1つ1つデータの数値を表示することができません
いい方法ありますでしょうか?
詳しい状況を書いていただいていないのでなんとも言えませんが、
動作サンプルのソースを参考にして頂ければと思います。