こんにちは。
今日はD3.jsを使って六角形を描いてみます。
ゴリゴリと自分で六角形を描いてもよいですが、そこにあまり労力をかけたくないですよね。
そこで、プラグインhexbinを使ってみます。
こんなふうに4つの六角形を描きます。
ソースはこんな感じになります。
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.hexagon {
fill: #1ee21e; //塗りつぶす色
stroke: #1ee21e; //線の色
stroke-width: .5px; //線の幅
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/d3.hexbin.v0.min.js"></script>
<script>
//表示範囲の指定
var width = 960,
height = 400;
// 六角形を描く位置(4つ描いてみる)
var points = [
[0, 20],
[20, 20],
[40, 20],
[60, 20]
];
var hexbin = d3.hexbin()
.radius(10); //半径
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var hexagon = svg
.append("g") //g要素でグルーピング
.attr("class", "hexagon") //"hexagon"というclass名にします
.selectAll("path") //pathを指す空リファレンス
.data(hexbin(points)) //六角形のデータをパース
.enter().append("path") //path要素をつくる
.attr("d", hexbin.hexagon()) //d属性に六角形のパスデータをセット
// 右にd.x、、下にd.yだけ移動(配列pointsの座標位置に移動)
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
</script>
D3.jsは書き方が独特ですよね。
上のソースコードが難しいと感じられたあなたには、
「インタラクティブ・データビジュアライゼーション ―D3.jsによるデータの可視化」
がおすすめです。
D3.js、SVGの基本的なことから書かれているので理解しやすいと思います。
hexbinについて詳しく知りたい方は、
githubに説明がありますので、そちらを参照してくださいね。