SlideShare a Scribd company logo
Submit Search
Upload
d3jsハンズオン @E2D3ハッカソン
Report
Share
圭輔 大曽根
Follow
•
12 likes
•
2,956 views
1
of
70
d3jsハンズオン @E2D3ハッカソン
•
12 likes
•
2,956 views
Report
Share
Download Now
Download to read offline
Engineering
2015/2/8に開催されたE2D3のハッカソンの資料です。 e2d3.org
Read more
圭輔 大曽根
Follow
Recommended
AngularJSでデータビジュアライゼーションがしたい by
AngularJSでデータビジュアライゼーションがしたい
Yosuke Onoue
1.6K views
•
22 slides
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション by
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
Yosuke Onoue
9.4K views
•
30 slides
D3.js と SVG によるデータビジュアライゼーション by
D3.js と SVG によるデータビジュアライゼーション
Kohei Kadowaki
13.8K views
•
81 slides
D3によるデータビジュアライゼーション 2013.09.13 by
D3によるデータビジュアライゼーション 2013.09.13
Minoru Chikamune
2.4K views
•
26 slides
物理エンジンを使って 3Dに息を吹き込む by
物理エンジンを使って 3Dに息を吹き込む
Kazuya Hiruma
2.7K views
•
33 slides
シェーダープログラムを無限に生成するガチャつくってみた PCD2019 by
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
Masaru Mizuochi
1.3K views
•
26 slides
More Related Content
Viewers also liked
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編 by
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
Koichi Hamada
18.5K views
•
98 slides
第2回関西ゼロから始めるR言語勉強会 by
第2回関西ゼロから始めるR言語勉強会
Iida Keisuke
2.5K views
•
21 slides
RとJavaScript Visualizationを俯瞰しよう by
RとJavaScript Visualizationを俯瞰しよう
Yasuyuki Sugai
10.7K views
•
16 slides
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜 by
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
Yasuyuki Sugai
21.1K views
•
97 slides
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する- by
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
Koichi Hamada
20.4K views
•
74 slides
10分で分かるr言語入門ver2.5 by
10分で分かるr言語入門ver2.5
Nobuaki Oshiro
36.6K views
•
105 slides
Viewers also liked
(14)
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編 by Koichi Hamada
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
Koichi Hamada
•
18.5K views
第2回関西ゼロから始めるR言語勉強会 by Iida Keisuke
第2回関西ゼロから始めるR言語勉強会
Iida Keisuke
•
2.5K views
RとJavaScript Visualizationを俯瞰しよう by Yasuyuki Sugai
RとJavaScript Visualizationを俯瞰しよう
Yasuyuki Sugai
•
10.7K views
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜 by Yasuyuki Sugai
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
Yasuyuki Sugai
•
21.1K views
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する- by Koichi Hamada
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
Koichi Hamada
•
20.4K views
10分で分かるr言語入門ver2.5 by Nobuaki Oshiro
10分で分かるr言語入門ver2.5
Nobuaki Oshiro
•
36.6K views
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介 by Takeshi Mikami
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
Takeshi Mikami
•
72.5K views
Tokyor42_r_datamining_18 by Yohei Sato
Tokyor42_r_datamining_18
Yohei Sato
•
13.2K views
Tokyor42 ggplot2 by Yohei Sato
Tokyor42 ggplot2
Yohei Sato
•
20.6K views
Tokyo r33 beginner by Takashi Minoda
Tokyo r33 beginner
Takashi Minoda
•
17.8K views
Tokyo r30 anova by Takashi Minoda
Tokyo r30 anova
Takashi Minoda
•
15.2K views
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法 by Nagi Teramo
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
Nagi Teramo
•
35K views
Tokyo r30 beginner by Takashi Minoda
Tokyo r30 beginner
Takashi Minoda
•
16.5K views
はじめての「R」 by Masahiro Hayashi
はじめての「R」
Masahiro Hayashi
•
240.9K views
Similar to d3jsハンズオン @E2D3ハッカソン
Gtug girls-20140828 by
Gtug girls-20140828
Daichi Morifuji
2.5K views
•
90 slides
D3.js で LOD を Visualization by
D3.js で LOD を Visualization
dsuke Takaoka
3.6K views
•
52 slides
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」 by
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」
aitc_jp
1.6K views
•
19 slides
D3jsを使ってみた@wcan lt大会 by
D3jsを使ってみた@wcan lt大会
Takuya Ueda
1.6K views
•
25 slides
R入門とgoogle map +α by
R入門とgoogle map +α
kobexr
4.3K views
•
26 slides
Play2 scalaを2年やって学んだこと by
Play2 scalaを2年やって学んだこと
dcubeio
3.7K views
•
61 slides
Similar to d3jsハンズオン @E2D3ハッカソン
(20)
Gtug girls-20140828 by Daichi Morifuji
Gtug girls-20140828
Daichi Morifuji
•
2.5K views
D3.js で LOD を Visualization by dsuke Takaoka
D3.js で LOD を Visualization
dsuke Takaoka
•
3.6K views
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」 by aitc_jp
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」
aitc_jp
•
1.6K views
D3jsを使ってみた@wcan lt大会 by Takuya Ueda
D3jsを使ってみた@wcan lt大会
Takuya Ueda
•
1.6K views
R入門とgoogle map +α by kobexr
R入門とgoogle map +α
kobexr
•
4.3K views
Play2 scalaを2年やって学んだこと by dcubeio
Play2 scalaを2年やって学んだこと
dcubeio
•
3.7K views
Data Visualization meetup 2017 by 清水 正行
Data Visualization meetup 2017
清水 正行
•
2K views
データ可視化勉強会 by Daichi Morifuji
データ可視化勉強会
Daichi Morifuji
•
13.7K views
Aaなゲームをjsで by Moriyoshi Koizumi
Aaなゲームをjsで
Moriyoshi Koizumi
•
805 views
Aaなゲームをjsで by Moriyoshi Koizumi
Aaなゲームをjsで
Moriyoshi Koizumi
•
1.1K views
バッテリー監視のためにバックグラウンドタスクについて調べたらなくなってたから泣く泣くタイマーApiを使ってみた話 by Masami Yabushita
バッテリー監視のためにバックグラウンドタスクについて調べたらなくなってたから泣く泣くタイマーApiを使ってみた話
Masami Yabushita
•
5.8K views
Arctic.js by chikathreesix
Arctic.js
chikathreesix
•
1.8K views
HTML5 と SVG で考える、これからの画像アクセシビリティ by Naoki Matsuda
HTML5 と SVG で考える、これからの画像アクセシビリティ
Naoki Matsuda
•
33.6K views
SVG MANIAX - CSS Nite After dark7 by Naoki Matsuda
SVG MANIAX - CSS Nite After dark7
Naoki Matsuda
•
25.8K views
データビジュアライゼーションの作り方 by 清水 正行
データビジュアライゼーションの作り方
清水 正行
•
3.1K views
Ember.js Tokyo event 2014/09/22 (Japanese) by Yuki Shimada
Ember.js Tokyo event 2014/09/22 (Japanese)
Yuki Shimada
•
565 views
Rで触れる日本経済~RでVAR編~ by Kazuya Wada
Rで触れる日本経済~RでVAR編~
Kazuya Wada
•
5.4K views
⑯jQueryをおぼえよう!その2 by Nishida Kansuke
⑯jQueryをおぼえよう!その2
Nishida Kansuke
•
21.5K views
動的計画法の並列化 by Proktmr
動的計画法の並列化
Proktmr
•
694 views
㉘HTML5+CSS3でアニメーション! by Nishida Kansuke
㉘HTML5+CSS3でアニメーション!
Nishida Kansuke
•
3.4K views
More from 圭輔 大曽根
累計DL数3,600万のアプリを成長させ続けるためのピボット by
累計DL数3,600万のアプリを成長させ続けるためのピボット
圭輔 大曽根
984 views
•
27 slides
マイクロサービスとABテスト by
マイクロサービスとABテスト
圭輔 大曽根
9.1K views
•
38 slides
Gunosy における AWS 上での自然言語処理・機械学習の活用事例 by
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
圭輔 大曽根
10.7K views
•
62 slides
Gunosyデータマイニング研究会 #118 これからの強化学習 by
Gunosyデータマイニング研究会 #118 これからの強化学習
圭輔 大曽根
5.8K views
•
39 slides
いまさら聞けない機械学習の評価指標 by
いまさら聞けない機械学習の評価指標
圭輔 大曽根
105.6K views
•
33 slides
記事分類における教師データおよびモデルの管理 by
記事分類における教師データおよびモデルの管理
圭輔 大曽根
10.1K views
•
15 slides
More from 圭輔 大曽根
(12)
累計DL数3,600万のアプリを成長させ続けるためのピボット by 圭輔 大曽根
累計DL数3,600万のアプリを成長させ続けるためのピボット
圭輔 大曽根
•
984 views
マイクロサービスとABテスト by 圭輔 大曽根
マイクロサービスとABテスト
圭輔 大曽根
•
9.1K views
Gunosy における AWS 上での自然言語処理・機械学習の活用事例 by 圭輔 大曽根
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
圭輔 大曽根
•
10.7K views
Gunosyデータマイニング研究会 #118 これからの強化学習 by 圭輔 大曽根
Gunosyデータマイニング研究会 #118 これからの強化学習
圭輔 大曽根
•
5.8K views
いまさら聞けない機械学習の評価指標 by 圭輔 大曽根
いまさら聞けない機械学習の評価指標
圭輔 大曽根
•
105.6K views
記事分類における教師データおよびモデルの管理 by 圭輔 大曽根
記事分類における教師データおよびモデルの管理
圭輔 大曽根
•
10.1K views
論文紹介@ Gunosyデータマイニング研究会 #97 by 圭輔 大曽根
論文紹介@ Gunosyデータマイニング研究会 #97
圭輔 大曽根
•
9.8K views
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」 by 圭輔 大曽根
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
圭輔 大曽根
•
1.7K views
2014/06/13 若手Webエンジニア交流会発表資料「博士課程の新卒エンジニアがデータ分析環境を作った話」 by 圭輔 大曽根
2014/06/13 若手Webエンジニア交流会発表資料「博士課程の新卒エンジニアがデータ分析環境を作った話」
圭輔 大曽根
•
1.6K views
第一回チキチキ秋のデータサイエンスアイデアソン&ハッカソン』開催報告会 アプリ名: 守備視え〜る by 圭輔 大曽根
第一回チキチキ秋のデータサイエンスアイデアソン&ハッカソン』開催報告会 アプリ名: 守備視え〜る
圭輔 大曽根
•
1.6K views
5分で分かった気になるリーンスタートアップ(用語編) by 圭輔 大曽根
5分で分かった気になるリーンスタートアップ(用語編)
圭輔 大曽根
•
1.8K views
HTML5を用いたセマンティックな文書作成【TechBuzz】第8回HTML5開発技術勉強会 〜先行事例紹介/交流会〜 by 圭輔 大曽根
HTML5を用いたセマンティックな文書作成【TechBuzz】第8回HTML5開発技術勉強会 〜先行事例紹介/交流会〜
圭輔 大曽根
•
1.9K views
Recently uploaded
AIで始めるRustプログラミング #SolDevHub by
AIで始めるRustプログラミング #SolDevHub
K Kinzal
20 views
•
25 slides
robotics42.pptx by
robotics42.pptx
Natsutani Minoru
166 views
•
18 slides
lt.pptx by
lt.pptx
tomochamarika
50 views
•
13 slides
3Dプリンタでロボット作るよ#1_黎明編 by
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
19 views
•
7 slides
図解で理解するvetKD by
図解で理解するvetKD
ryoo toku
84 views
•
22 slides
how query cost affects search behavior translated in JP by
how query cost affects search behavior translated in JP
Tobioka Ken
9 views
•
16 slides
Recently uploaded
(7)
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHub
K Kinzal
•
20 views
robotics42.pptx by Natsutani Minoru
robotics42.pptx
Natsutani Minoru
•
166 views
lt.pptx by tomochamarika
lt.pptx
tomochamarika
•
50 views
3Dプリンタでロボット作るよ#1_黎明編 by Yoshihiro Shibata
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
•
19 views
図解で理解するvetKD by ryoo toku
図解で理解するvetKD
ryoo toku
•
84 views
how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JP
Tobioka Ken
•
9 views
SSH超入門 by Toru Miyahara
SSH超入門
Toru Miyahara
•
48 views
d3jsハンズオン @E2D3ハッカソン
1.
D3.jsハンズオン @E2D3 ハッカソン ! ! E2D3 大曽根
圭輔
2.
about:me •大曽根圭輔 博士(工学) 茨城県出身 •現在の仕事 ゲームのデータ分析 •趣味 たくさん -
やる: バンド、スポーツ (フットサル、ランニング) - 観る: スポーツ、ライブ
3.
ハンズオンの想定する対象 •JavaScriptを触ったことがある •D3.jsは触ったことがない
4.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
5.
D3.jsとは •Data Driven Documentの略 •D3.js
はデータに基づいてドキュメン トを操作するための JavaScript ライ ブラリ •Mike Bostock作
6.
http://d3js.org/ http://d3js.org/
7.
D3.jsとは •D3はグラフを書くライブラリでない - HighChartsなどとは異なる •データをビジュアルをつないでくれる
8.
参考URL •サンプルコードはこちらから https://github.com/keisuke- osone/d3js_hands_on/
9.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
10.
触ってみよう! <script src="http://d3js.org/d3.v3.min.js"> </script>
11.
index.html <!DOCTYPE html> <html lang="ja"> <head> <meta
charset="UTF-8"> <title>D3.js ハンズオン¦E2D3 Hackathon</title> <script src="http://d3js.org/d3.v3.min.js"></script> </head> <body> <script src="d3_sample.js" charset="utf-8"></script> </body> </html>
12.
触ってみよう! 今回使うのは、茨城県笠間市(私の出身地)の気象データ (sample_data.csv) 元データ: http://www.jma.go.jp/
13.
触ってみよう! d3.csv('./sample_data.csv', function(data) { console.log(data); }); ※サーバを立てるなりして対応して下さい python
-m SimpleHTTPServer 8888 とかXAMPとかMAMPとか
14.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
15.
データをDOMに追加 セレクタなどはjQueryと似ている メソッドチェーンが特徴
16.
データをDOMに追加 d3.select('body') body要素を追加
17.
データをDOMに追加 d3.select('body') .selectAll('p') div要素を追加 (まだない)
18.
データをDOMに追加 d3.select('body') .selectAll('p') .data(data) .enter() dataを追加※
19.
データをDOMに追加 d3.select('body') .selectAll('p') .data(data) .enter() .append('p') dataの数だけ p要素を追加
20.
データをDOMに追加 d3.select('body') .selectAll('p') .data(data) .enter() .append('p') .text(function (d) {return
d.date}) p要素のテキストを データのdateに
21.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
22.
グラフを書いてみる 必要なもの <svg>、<g>など
23.
SVGとは ベクターグラフィック
24.
要素の作成 //表示するデータ var metrics =
sunshine_duration'; // サイズの定義 var width = 600; var height = 400; // svgを追加 drawArea = d3.select('body').append('svg') .attr('width', width) .attr('height', height) .append('g')
25.
描画 // 描画 drawArea .selectAll( rect') .data(data) .enter() .append('rect') .attr('fill',
'#f00') .attr("x", function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); rect要素を選択 ※まだない
26.
描画 // 描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .attr('fill', '#f00') .attr("x",
function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); dataをセット
27.
描画 // 描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .attr('fill', '#f00') .attr("x",
function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); rect(四角形)を挿入
28.
描画 // 描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .attr('fill', '#f00') .attr("x",
function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); 赤く染める
29.
描画 // 描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .attr('fill', '#f00') .attr("x",
function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); 要素の数に応じて間隔を空ける ※無名関数 (二個目の引数は要素の番号)
30.
描画 // 描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .attr('fill', '#f00') .attr("x",
function (d, i) { return i * 10; }) .attr("width", 10) .attr("height", function (d) { return d[metrics]; }); 高さを指標の値に設定
31.
あれれーおかしいぞ
32.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
33.
スケールが必要 温度の値[-0.3度, 12.7度]を svgの[0px, 300px]の範囲に描画したい
34.
// 最大値の取得 var yMax
= d3.max(data, function (d) { return parseInt(d[metrics], 10) + 1; }) // 最小値の取得 var yMin = d3.min(data, function (d) { return parseInt(d[metrics], 10); }) ! var yScale = d3.scale.linear() .domain([yMin, yMax]) // 温度の値[最小, 最大]を .range([300, 0]); // svgの[0px, 300px]の範囲に描画したい 高さを指標の値に設定
35.
スケール var yScale =
d3.scale.linear() .domain([-0.3, 12.7]) // 温度の値[-0.3度, 12.7度]を .range([300, 0]); // svgの[0px, 300px]の範囲に描画したい ! 省略 .attr("height", function (d) { return yScale(d[metrics]); }); 高さを指標の値に設定
36.
あれれーおかしいぞ
37.
SVGの座標系 y座標は上から下(上が0)、 x座標は左から右(左が0)
38.
修正 // 描画 .attr("width", 10) .attr('y',
function (d) { return yScale(d[metrics]) }) .attr('height', function (d) { return height - yScale(d[metrics]); });
39.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
40.
アニメーション D3.jsの醍醐味のひとつ
41.
Transition // 描画 .attr('y', height) .attr('x',
function (d, i) { return i * 15; }) .transition() .duration(1000) .attr('y', function (d) { return yScale(d[metrics]) }) .attr('height', function (d) { return height - yScale(d[metrics]); });
42.
Delay // 描画 .attr('y', height) .attr('x',
function (d, i) { return i * 15; }) .transition() .duration(1000) .delay(function(d, i) { return i * 20; }) .attr('y', function (d) { return yScale(d[metrics]) }) .attr('height', function (d) {
43.
Ease // 描画 .attr('y', height) .attr('x',
function (d, i) { return i * 15; }) .transition() .duration(1000) .delay(function(d, i) { return i * 20; }) .ease('bounce') .attr('y', function (d) { return yScale(d[metrics]) })
44.
Ease • linear • quad •
cubic • sin • exp ! などなど ここらへんを参考に http://bl.ocks.org/hunzy/9929724
45.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
46.
イベントを追加する // バーの描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .on('click', function
(d) { alert(metrics + d[metrics]) })
47.
イベントを追加する // バーの描画 drawArea .selectAll('rect') .data(data) .enter() .append('rect') .on('mouseover', function
(d) { d3.select(this) .attr('fill', 'orange') })
48.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
49.
軸 グラフでは軸が大事
50.
軸を描画する領域を確保 // サイズの定義 var maxHeight
= 400; var maxWidth = 600; var leftMargin = 50; var topMargin = 50; var bottomMargin = 50; // 描画領域のサイズを設定 var height = maxHeight - topMargin - bottomMargin var width = maxWidth - leftMargin
51.
軸を描画する領域を確保 // svgを追加 drawArea =
d3.select('body').append('svg') .attr('width', maxWidth) .attr('height', maxHeight) .attr('transform', 'translate(' + leftMargin + ',' + topMargin + ')')
52.
yのスケールの設定 // yのスケールの設定 var yScale
= d3.scale.linear() .domain([yMin, yMax]) .range([height, 0]);
53.
軸の設定 // yの軸の設定 var yAxis
= d3.svg.axis() .scale(yScale) .orient('left');
54.
軸の設定 // y軸をsvgに表示 drawArea .append('g') .attr('class', 'y
axis') .call(yAxis)
56.
要素の作成 //表示するデータ var metrics =
wind_speed'; // サイズの定義 var width = 600; var height = 400; // svgを追加 drawArea = d3.select('body').append('svg') .attr('width', width) .attr('height', height) .append('g')
58.
いろいろやってみましょう
59.
目次 •D3.jsとは •触ってみよう •グラフを書いてみる - データをDOMに追加 - SVGを用いての描画 -
スケール - アニメーション - イベント - 軸 •おまけ
60.
おまけ: 散布図の作成 var xMetrics
= 'sunshine_duration'; var yMetrics = 'wind_speed';
61.
おまけ: 散布図の作成 // 最大値の取得 var
xMax = d3.max(data, function (d) { return parseInt(d[xMetrics], 10) + 1}); // 最小値の取得 var xMin = d3.min(data, function (d) { return d[xMetrics]});
62.
おまけ: 散布図の作成 // 散布図の描画 drawArea .selectAll('circle') .data(data) .enter() .append('circle')
63.
おまけ: 散布図の作成 .attr('r', 0) .attr('cx',
function (d) { return xScale(d[xMetrics]); }) .attr('cy', function (d) { return yScale(d[yMetrics]) }) .transition() .duration(1000) .delay(function(d, i) { return i * 20; }) .ease('bounce') .attr('r', 10);
65.
おまけ: バブルチャートの作成 var xMetrics
= 'sunshine_duration'; var yMetrics = wind_speed'; var zMetrics = temperature';
66.
// 最大値の取得 var zMax
= d3.max(data, function (d) { return parseInt(d[zMetrics], 10) + 1}); // 最小値の取得 var zMin = d3.min(data, function (d) { return d[zMetrics]}); ! // yのスケールの設定 var zScale = d3.scale.linear() .domain([zMin, zMax]) .range([0, r]); おまけ: バブルチャートの作成
67.
// 散布図の描画 drawArea .selectAll('circle') .data(data) .enter() .append('circle') おまけ: バブルチャートの作成
68.
.attr('cy', function (d)
{ return yScale(d[yMetrics]) }) .transition() .duration(1000) .delay(function(d, i) { return i * 20; }) .ease('bounce') .attr('r', function(d, i) { return zScale(d[zMetrics]) }); おまけ: バブルチャートの作成
70.
いろいろやってみましょう