
二次元カーネル密度推定プラグイン「d3-contour」
d3-contourは、二次元の値を持つ配列にたいして輪郭ポリゴンを生成するD3プラグインです。
GeoJSON MultiPolygonジオメトリオブジェクトとして出力されるので、散布図以外にも地図上のポイントを元にした等高線やヒートマップの生成などに利用することができます。
サンプル
群馬県オープンデータサイトにて公開されている「AED設置場所情報」から、高崎市のデータを抜き出し、d3.contourDensityメソッドを使用してヒートマップを作成しました。
d3.contourDensityの利用法はとても簡単で、基本的にはx,yに対応するアクセサを指定してあげれば、閾値に準じた輪郭ポリゴン(geojson)を生成してくれます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //ポイントデータ var data = d3.range(40).map(function(){ return {x:~~(Math.random()*400), y:~~(Math.random()*400) }}) //輪郭ポリゴンジェネレーター var contours = d3.contourDensity()     .thresholds(10)     .size([400, 400])     .x(function(d){ return d.x ;})     .y(function(d){ return d.y ;}) //輪郭ポリゴン生成     var geojosn = contours(data) //path要素として描画 var svg.selectAll(".contours")     .data(contours(data))     .enter()     .append("path")     .attr("d", d3.geoPath())     .attr("fill", "blue")     .attr("fill-opacity", 0.2)     .attr("stroke", "none")     ; | 

