d3.js始めた

d3.jsとは

D3: Data Driven Documentの略らしく、
とてもかっこいいグラフや動的なノードの関係を視覚的に表示することができます。 http://d3js.org/

サンプルを見てみるとすごい! https://github.com/mbostock/d3/wiki/Gallery

とりあえずサンプルコピペすれば動くんだろと思ったら。。。

簡単ではなかったd3.js

すんません、適当にjsonかましたらいいように動いてくれるだろと思ってました。
svgの中にデータを描写するような仕組みのようで、描写を行う場所やデータの取り扱い方をまず理解しないと始まらないことがわかってきました。
ひとまずサンプルや本やらを見ながらシンプルなグラフを生成。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<style>
svg { width: 320px; height: 140px; padding-top:10px; border: 1px solid black; }
#myGraph rect {
    stroke: rgb(0, 0, 0);
    stroke-width: 1px;
    fill: rgb(255, 0, 0);
}
</style>
</head>
<body>

<svg id="myGraph"></svg>

<!-- ds.jsの呼び出し -->
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
// Dataの定義
var dataSet = [300, 130, 5, 60, 240];

// myGraphへ適応させていく
d3.select("#myGraph")
    .selectAll('rect') // 追加される要素がすべてrect
    .data(dataSet) // 処理する対象データ
    .enter() // データの数によってrect要素を生成
    .append('rect') // svgの四角形を生成
    .attr('x', 0) // x座標は全部0
    .attr('y', function(d, i){ // データを25pxずつずらして重ならないようにする
        return i * 25;
    })
    .attr('width', function(d, i){ // データの値を横の長さにする
        return d +'px';
    })
    .attr('height', '20px'); // 棒グラフの高さ指定
</script>
</body>
</html>

svgの中でrect要素を生成すると四角形が描写されます、これを利用して要素の分だけ繰り返したり、座標を操作して並べたりを行うことがd3.jsで行うことができるようです。

今回はシンプルな横の棒グラフを描写しました。

See the Pen D3 Sample by Yuya Tanaka (@laddy) on CodePen.