JSで図を描写するライブラリはいくつかありますが、Canvas要素ベースのChart.jsとSVG要素ベースのd3.jsが目につきました。どっちを先にやるか迷いましたが、Three.jsでCanvas要素に触れ始めているので3Dと2Dの比較として触ってみることにしました。
※目次:
※参考:JSライブラリとは?
【卒jQueryへの道】生JSとライブラリとフレームワークの理解 - クモのようにコツコツと
Chart.jsの公式サイト
まずは、公式サイトに行って見た。うーむ、英語。。
左メニューに「Getting Started」とう文字が見える。さっそくGettingしてStartedしようじゃないか。
※参考: Getting Started · Chart.js documentation
Chart.js本体ファイルの読み込み
Getting StartedページにあるコードをCodePenに貼ってみたい。
まずはChart.jsの本体ファイルを読み込むために「JS」の「Setting(歯車アイコン)をクリック。「Quick-add」の中にはないようなので「Chart.js」で検索。CDN、ありました!
<!--CodePen以外は下記を配置--> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js"></script>
さあ、準備完了!さっそくコードを貼ってみよう。
コードを貼ってみる
実際に貼ってみた。
おお!?下からニョキっと曲線の折れ線グラフが出てきたぞ!アニメーションになってるのか。
HTMLはこの1行!
<canvas id="myChart"></canvas>
canvas
要素に#myChart
ってid名が付いてるだけ。
そしてCSSはなし!あとは全てJSに書いてあるようだ。
var ctx = document.getElementById('myChart').getContext('2d'); var chart = new Chart(ctx, { // The type of chart we want to create type: 'line', // The data for our dataset data: { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [{ label: "My First dataset", backgroundColor: 'rgb(255, 99, 132)', borderColor: 'rgb(255, 99, 132)', data: [0, 10, 5, 2, 20, 30, 45], }] }, // Configuration options go here options: {} });
コード量、そんなに多くないですね!ちょっと順番に見ていきますか。
JSを読み解く
まず最初の行
var ctx = document.getElementById('myChart').getContext('2d');
変数ctx
に、DOMで#myChart
と紐付けて
、そのあとにgetContext()
メソッドが続いている。これはChart.jsにあらかじめ定義されたメソッドですね。
コンテキストは「文脈」みたいな意味のようだが引数2d
で2Dオブジェクトだと指定しているようだ。
次の行からは一かたまりになっているので、外側からみていきましょう。
var chart = new Chart(引数1, 引数2);
まず変数chart
にnew
でChartオブジェクトをインスタンス化(複製)しています。
このChart
オブジェクトもChart.jsの中にあらかじめ定義されているものです。中には引数が2つ入っています。
※参考:【JS】newとプロトタイプとクラス - クモのようにコツコツと
次に引数の中をみていきましょう。
var chart = new Chart(ctx, { //連想配列 キー: 値, キー: 値, キー: 値, });
まず、第一引数に先ほどの変数ctx
が入ります。第二引数には連想配列が続きます。
ctx
の中の連想配列設定をここで上書きしていくのでしょう。
※参考:連想配列とは
【JSの基本-前編】書ける前に読む!HTML、CSS、JSの書式-4 - クモのようにコツコツと
では、連想配列をみていきましょう。
// The type of chart we want to create type: 'line',
まず、type
キーの値をline
にしています。上のコメントをGoogle翻訳すると「作成したいチャートのタイプ」とある。線グラフにしたんですね。
次の行
// The data for our dataset data: { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [{ label: "My First dataset", backgroundColor: 'rgb(255, 99, 132)', borderColor: 'rgb(255, 99, 132)', data: [0, 10, 5, 2, 20, 30, 45], }] },
連想配列が入れ子になってますねー。上のコメントを訳すと「データセットのデータ」とある。
- 一番上の親:
date
キー。その中に子の連想配列が入っている。 - 子の一つ目:
labels
キーで値は配列で月名が入ってますね。 - 子の二つ目:
datasets
キーで、その中に孫の連想配列が入っている。 - 孫の一つ目:
label
キーで値は文字列"My First dataset"
。これは上にある図のキャプションだ。 - 孫の二つ目:
backgroundColor
キーで値はRGBの数値。これは線の下部分の赤い背景色ですね。 - 孫の三つ目:
borderColor
キーで値はRGBの数値。赤い線の色ですね。 - 孫の四つ目:
data
キーでこれがデータの数値が配列で入っている。
次の連想配列を見ましょう。これで最後です。
// Configuration options go here options: {}
コメントを訳すと「設定オプションはこちらになります」。御意。
options
キーですが値は空ですね。波括弧{}
なのでここにも連想配列を追加できます。
まとめ
ということで全体的には「変数ctc
にcanvas要素#myChart
を紐づけて、2Dコンテキストにしている。
そしてchart
インスタンスでctc
に月名、キャプション、色、データの数値を反映している。
オプションはなし。」といった内容が書いてあります。
下からニョキっとでてくるモーションについては言及がないので、標準仕様なのかな。
無事にChart.jsをGettingしてStartedできたので、次はこの数値をいくつか打ち替えて動きをみようと思います。
それではまた。