Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
圭輔 大曽根
2,973 views
d3jsハンズオン @E2D3ハッカソン
2015/2/8に開催されたE2D3のハッカソンの資料です。 e2d3.org
Engineering
◦
Read more
12
Save
Share
Embed
Embed presentation
Download
Downloaded 25 times
1
/ 70
2
/ 70
3
/ 70
4
/ 70
5
/ 70
6
/ 70
7
/ 70
8
/ 70
9
/ 70
10
/ 70
11
/ 70
12
/ 70
13
/ 70
14
/ 70
15
/ 70
16
/ 70
17
/ 70
18
/ 70
19
/ 70
20
/ 70
21
/ 70
22
/ 70
23
/ 70
24
/ 70
25
/ 70
26
/ 70
27
/ 70
28
/ 70
29
/ 70
30
/ 70
31
/ 70
32
/ 70
33
/ 70
34
/ 70
35
/ 70
36
/ 70
37
/ 70
38
/ 70
39
/ 70
40
/ 70
41
/ 70
42
/ 70
43
/ 70
44
/ 70
45
/ 70
46
/ 70
47
/ 70
48
/ 70
49
/ 70
50
/ 70
51
/ 70
52
/ 70
53
/ 70
54
/ 70
55
/ 70
56
/ 70
57
/ 70
58
/ 70
59
/ 70
60
/ 70
61
/ 70
62
/ 70
63
/ 70
64
/ 70
65
/ 70
66
/ 70
67
/ 70
68
/ 70
69
/ 70
70
/ 70
More Related Content
PDF
AngularJSでデータビジュアライゼーションがしたい
by
Yosuke Onoue
PDF
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
by
Yosuke Onoue
PDF
D3.js と SVG によるデータビジュアライゼーション
by
Kohei Kadowaki
PPTX
D3によるデータビジュアライゼーション 2013.09.13
by
Minoru Chikamune
PDF
物理エンジンを使って 3Dに息を吹き込む
by
Kazuya Hiruma
PPTX
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
by
Masaru Mizuochi
PDF
Reading Self-descriptive FizzBuzz
by
Hiroyuki Morita
PDF
D3.jsと学ぶVisualization(可視化)の世界
by
AdvancedTechNight
AngularJSでデータビジュアライゼーションがしたい
by
Yosuke Onoue
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
by
Yosuke Onoue
D3.js と SVG によるデータビジュアライゼーション
by
Kohei Kadowaki
D3によるデータビジュアライゼーション 2013.09.13
by
Minoru Chikamune
物理エンジンを使って 3Dに息を吹き込む
by
Kazuya Hiruma
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
by
Masaru Mizuochi
Reading Self-descriptive FizzBuzz
by
Hiroyuki Morita
D3.jsと学ぶVisualization(可視化)の世界
by
AdvancedTechNight
Viewers also liked
PDF
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
by
Koichi Hamada
ODP
第2回関西ゼロから始めるR言語勉強会
by
Iida Keisuke
PDF
RとJavaScript Visualizationを俯瞰しよう
by
Yasuyuki Sugai
PDF
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
by
Yasuyuki Sugai
PDF
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
by
Koichi Hamada
PDF
10分で分かるr言語入門ver2.5
by
Nobuaki Oshiro
PDF
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
by
Takeshi Mikami
PPTX
Tokyor42_r_datamining_18
by
Yohei Sato
PDF
Tokyor42 ggplot2
by
Yohei Sato
PPTX
Tokyo r33 beginner
by
Takashi Minoda
PPTX
Tokyo r30 anova
by
Takashi Minoda
PDF
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
by
Nagi Teramo
PPTX
Tokyo r30 beginner
by
Takashi Minoda
PDF
はじめての「R」
by
Masahiro Hayashi
[データマイニング+WEB勉強会][R勉強会] R言語によるクラスター分析 - 活用編
by
Koichi Hamada
第2回関西ゼロから始めるR言語勉強会
by
Iida Keisuke
RとJavaScript Visualizationを俯瞰しよう
by
Yasuyuki Sugai
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
by
Yasuyuki Sugai
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる R言語によるクラスター分析 - 似ているものをグループ化する-
by
Koichi Hamada
10分で分かるr言語入門ver2.5
by
Nobuaki Oshiro
K meansによるクラスタリングの解説と具体的なクラスタリングの活用方法の紹介
by
Takeshi Mikami
Tokyor42_r_datamining_18
by
Yohei Sato
Tokyor42 ggplot2
by
Yohei Sato
Tokyo r33 beginner
by
Takashi Minoda
Tokyo r30 anova
by
Takashi Minoda
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
by
Nagi Teramo
Tokyo r30 beginner
by
Takashi Minoda
はじめての「R」
by
Masahiro Hayashi
Similar to d3jsハンズオン @E2D3ハッカソン
PDF
Gtug girls-20140828
by
Daichi Morifuji
PDF
D3jsを使ってみた@wcan lt大会
by
Takuya Ueda
PDF
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」
by
aitc_jp
PDF
インフォグラフィックス時代のD3.js入門
by
貴寛 益子
PDF
D3js入門 - Code for Kobe 可視化勉強会資料
by
充彦 保田
PDF
D3.js講習会〜3回目〜
by
Yukihiro Moriyama
PDF
データビジュアライゼーションの作り方
by
清水 正行
PDF
Data Visualization meetup 2017
by
清水 正行
PDF
D3.js講習会〜1回目〜
by
Yukihiro Moriyama
PDF
D3.js で LOD を Visualization
by
dsuke Takaoka
PDF
Data Visualizationしてみた [ D3.js編 ]
by
weddingpark
PDF
ちゃんと学ぶ D3.js
by
Takeshi Osoekawa
PDF
ワークショップ「D3.js」入門
by
Yuichi Yazaki
PPTX
D3.jsで日本地図を描いてみた
by
mapquestIwasaki
PDF
データ可視化勉強会
by
Daichi Morifuji
PDF
データビジュアライゼーション Dc.jsで遊ぼう - 清水
by
chome03
PDF
E2D3で地図を作画してみよう
by
Shigeo Ueda
PPTX
A Road map of Data Analysis for Visualization with D3.js
by
博三 太田
PPTX
HoloLens2とMeta QuestではじめるWebXR
by
Takashi Yoshinaga
PDF
Tamabi media131118
by
Atsushi Tadokoro
Gtug girls-20140828
by
Daichi Morifuji
D3jsを使ってみた@wcan lt大会
by
Takuya Ueda
2015年7月期AITC女子会「D3.js/Highchartsによるデータの可視化」
by
aitc_jp
インフォグラフィックス時代のD3.js入門
by
貴寛 益子
D3js入門 - Code for Kobe 可視化勉強会資料
by
充彦 保田
D3.js講習会〜3回目〜
by
Yukihiro Moriyama
データビジュアライゼーションの作り方
by
清水 正行
Data Visualization meetup 2017
by
清水 正行
D3.js講習会〜1回目〜
by
Yukihiro Moriyama
D3.js で LOD を Visualization
by
dsuke Takaoka
Data Visualizationしてみた [ D3.js編 ]
by
weddingpark
ちゃんと学ぶ D3.js
by
Takeshi Osoekawa
ワークショップ「D3.js」入門
by
Yuichi Yazaki
D3.jsで日本地図を描いてみた
by
mapquestIwasaki
データ可視化勉強会
by
Daichi Morifuji
データビジュアライゼーション Dc.jsで遊ぼう - 清水
by
chome03
E2D3で地図を作画してみよう
by
Shigeo Ueda
A Road map of Data Analysis for Visualization with D3.js
by
博三 太田
HoloLens2とMeta QuestではじめるWebXR
by
Takashi Yoshinaga
Tamabi media131118
by
Atsushi Tadokoro
More from 圭輔 大曽根
PDF
累計DL数3,600万のアプリを成長させ続けるためのピボット
by
圭輔 大曽根
PDF
マイクロサービスとABテスト
by
圭輔 大曽根
PDF
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
by
圭輔 大曽根
PDF
Gunosyデータマイニング研究会 #118 これからの強化学習
by
圭輔 大曽根
PDF
いまさら聞けない機械学習の評価指標
by
圭輔 大曽根
PDF
記事分類における教師データおよびモデルの管理
by
圭輔 大曽根
PDF
論文紹介@ Gunosyデータマイニング研究会 #97
by
圭輔 大曽根
PDF
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
by
圭輔 大曽根
PDF
2014/06/13 若手Webエンジニア交流会発表資料「博士課程の新卒エンジニアがデータ分析環境を作った話」
by
圭輔 大曽根
PDF
第一回チキチキ秋のデータサイエンスアイデアソン&ハッカソン』開催報告会 アプリ名: 守備視え〜る
by
圭輔 大曽根
PDF
5分で分かった気になるリーンスタートアップ(用語編)
by
圭輔 大曽根
PDF
HTML5を用いたセマンティックな文書作成【TechBuzz】第8回HTML5開発技術勉強会 〜先行事例紹介/交流会〜
by
圭輔 大曽根
累計DL数3,600万のアプリを成長させ続けるためのピボット
by
圭輔 大曽根
マイクロサービスとABテスト
by
圭輔 大曽根
Gunosy における AWS 上での自然言語処理・機械学習の活用事例
by
圭輔 大曽根
Gunosyデータマイニング研究会 #118 これからの強化学習
by
圭輔 大曽根
いまさら聞けない機械学習の評価指標
by
圭輔 大曽根
記事分類における教師データおよびモデルの管理
by
圭輔 大曽根
論文紹介@ Gunosyデータマイニング研究会 #97
by
圭輔 大曽根
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
by
圭輔 大曽根
2014/06/13 若手Webエンジニア交流会発表資料「博士課程の新卒エンジニアがデータ分析環境を作った話」
by
圭輔 大曽根
第一回チキチキ秋のデータサイエンスアイデアソン&ハッカソン』開催報告会 アプリ名: 守備視え〜る
by
圭輔 大曽根
5分で分かった気になるリーンスタートアップ(用語編)
by
圭輔 大曽根
HTML5を用いたセマンティックな文書作成【TechBuzz】第8回HTML5開発技術勉強会 〜先行事例紹介/交流会〜
by
圭輔 大曽根
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.
いろいろやってみましょう
Download