データビジュアライゼーション Dc.jsで遊ぼう - 清水

17
データビジュアライゼーション - dc.js で遊ぼう - 清水顕 株式会社ユーザベース エンジニア

Transcript of データビジュアライゼーション Dc.jsで遊ぼう - 清水

Page 1: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

データビジュアライゼーション-dc.jsで遊ぼう-

清水顕

株式会社ユーザベース エンジニア

Page 2: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

自己紹介• 清水顕(SPEEDA品質改善チーム:Bug-D)

• 最近興味のあるもの

Oculus Rift

・先週結婚しました

Page 3: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

「びじゅあらいぜーしょん」って?

Page 4: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

dc.jsとは• 多次元解析用に作られたJavascript

のチャートライブラリ。配列フィルタ処理ライブラリのCrossfilterとデータビジュアライゼーション作成用ライブラリのD3.jsの技術を使用して複数のチャートにまたがってデータのフィルタリングを可能にするうんぬんかんぬん・・・・

Page 5: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

わけがわからないよ

Page 6: データビジュアライゼーション   Dc.jsで遊ぼう - 清水
Page 7: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

SVG(Scalable Vector Graphics)

• ピクセルベースではなく、線や面など図形の集合体として画像を扱う

• HTML5でInline SVGがサポートされ、HTML内でSVGを直接記述可能に

Page 8: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

d3.js• データビジュアライゼーション用に作られたJavaScript

ライブラリ

• データ駆動でSVGを使用したグラフ作成を容易にできる

• やや低レベルなライブラリ

• 極めるとちょーすごいこともできる

Page 9: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

dc.js• Crossfilterとd3.jsに依存したチャートライブラリ

• 複数のチャートにまたがってフィルタリングできる

• チャート描画時にd3.jsよりもめんどくさいコードを書かなくて済む

Page 10: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

dc.jsで遊んでみる

Page 11: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

データを準備• データ提供:SPEEDA

• 国内全上場企業の年度毎売上高を都道府県別に取得

• CSVに変換

Page 12: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

デモ

Page 13: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

var chart = dc.barChart("#test");

var data = crossfilter(dataset);var yearDimension = data.dimension(function(d) {return d.year;});var dataSumGroup = yearDimension.group().reduceSum(

function(d) {return d.data_num / 1000000000000;});

var minYear = d3.min(dataset,function(d) {return d.year;});var maxYear = d3.max(dataset,function(d) {return d.year;});

chart.width(768).height(480).x(d3.scale.linear().domain([minYear,maxYear])).yAxisLabel("売上高(単位:1兆円)").dimension(yearDimension).group(dataSumGroup);

Page 14: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

var chart2 = dc.pieChart("#test2");

var data = crossfilter(dataset);var pfctDimension = data.dimension(function (d) {return d.pfct;});var pieGroup = pfctDimension.group().reduceSum(

function (d) {return d.data_num / 1000000000000;});

chart2.width(600).height(1000).innerRadius(100).dimension(pfctDimension).group(pieGroup).legend(dc.legend());

Page 15: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

地図を出したい

Page 16: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

GeoJSON• 地理情報をJSONフォーマットで出力したもの

• Natural Earthに全世界の地理データ(!!)がある

• shape形式のデータをGeoJSONに変換すればできあがり。

(※Windowsだと死ぬほどめんどくさい)

• dc.jsにGeoJSONを読み込んで地図を表示する機能が!

Page 17: データビジュアライゼーション   Dc.jsで遊ぼう - 清水

参考図書• インタラクティブ・データビジュアライゼーション

-D3.jsによるデータの可視化-