Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
d3.js demonstration
Search
muddydixon
March 28, 2023
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
d3.js demonstration
muddydixon
March 28, 2023
More Decks by muddydixon
See All by muddydixon
企業と勉強会
muddydixon
0
100
basic of data visualization and d3.js demonstration
muddydixon
0
150
study before deeplearning @YAPC2015
muddydixon
0
140
data visualization @html5study
muddydixon
0
110
Time Series Prediction@JubatusCasualTalk2
muddydixon
0
96
Perl for Visualization@YAPC2013
muddydixon
0
120
Time Series Analysis by JavaScript @LLMatsuri2013
muddydixon
0
140
How to create my own Hadoop MultipleInput@HadoopCodeReading8
muddydixon
0
93
BigDataAnalytics beginning by mongo-hadoop@MongoTokyo2012
muddydixon
0
70
Other Decks in Programming
See All in Programming
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
500
What We Talk About When We Talk About XP
m_seki
2
670
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
Verilogで学ぶCPU自作入門.pdf
uyuki234
1
370
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.2k
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
200
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
550
Webの地図
yosuke_furukawa
PRO
6
4.7k
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.5k
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
280
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
370
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
Claude Code のすすめ
schroneko
67
230k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
The Limits of Empathy - UXLibs8
cassininazir
1
680
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
Practical Orchestrator
shlominoach
192
12k
Transcript
%KTΛ ͬͯΈΑ͏ !NVEEZEJYPO (56((JSMT.FFUVQ
!NVEEZEJYPO "NVEEZEJYPO #NVEEZEJYPO ! /PEFKT 1FSM 7JTVBMJ[BUJPO 5JNF4FSJFT /FVSBM/FUXPSL ࢲJT
ΞδΣϯμ %KTͱ %KTͷྲྀΕ %KTͷαϯϓϧհ %KTϋϯζΦϯ ࢄਤ άϥϑ ંઢάϥϑ άϥϑͷՄࢹԽ
σʔλՄࢹԽͱ The main goal of data visualization is its ability
to visualize data, communicating information clearly and effectivelty. Vitaly Friedman $ σʔλՄࢹԽͷతɺσʔλΛՄࢹԽ͠ɺ ใΛ໌͔֬ͭޮతʹ͑Δ͜ͱͰ͋Δ $
ࠓͷࢿྉͰ͢ IUUQTHJUIVCDPNNVEEZEJYPO (56((*3-450,:0
%KTͱ
%KTͱ
None
ΩϥΩϥԵ
%KTͱ %BUB%SJWFO%PDVNFOUT JOMJOF47( IUUQTEFWFMPQFSNP[JMMBPSHKBEPDT 47(@*O@)5.-@*OUSPEVDUJPO ෳ߹ϥΠϒϥϦ 47(ૢ࡞ ॲཧ ՄࢹԽϢʔςΟϦςΟ
%KTͱd%%%d < > 図形化
%KTͱd%%%d < > <
> 正規化
%KTͱd%%%d < > <
> 正規化 図形化
%KTͱd%%%d < > <
> 正規化 図形化 %BUB%SJWFO %PDVNFOUT
%KTͱd%%%d 4FQBM-FOHUI 4FQBM8JEUI 1FUBM-FOHUI 1FUBM8JEUI 4QFDJFT
TFUPTB TFUPTB TFUPTB TFUPTB TFUPTB WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB
%KTͱd%%%d 4FQBM-FOHUI 4FQBM8JEUI 1FUBM-FOHUI 1FUBM8JEUI 4QFDJFT
TFUPTB TFUPTB TFUPTB TFUPTB TFUPTB WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB
%KTͱd%%%d 4FQBM-FOHUI 4FQBM8JEUI 1FUBM-FOHUI 1FUBM8JEUI 4QFDJFT
TFUPTB TFUPTB TFUPTB TFUPTB TFUPTB WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WFSTJDPMPS WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB WJSHJOJDB %BUB%SJWFO %PDVNFOUT
%KTͱd47(d 47(4DBMBCMF7FDUPS(SBQIJDT ! ! ! ! ! )5.-ͰʮJOMJOF47(ʯ͕ར༻Մೳʹʂ IUNMʹTWH YNM
ΛຒΊࠐΜͰར༻Մೳʂ http://www.slideshare.net/k
%KTͱd47(d IUNM IFBEུIFBE CPEZ TWHXJEUIIFJHIU DJSDMFDYDZ SpMMSFE TWH CPEZ IUNM
%KTͱd47(d IUNM IFBEུIFBE CPEZ TWHXJEUIIFJHIU DJSDMFDYDZ SpMMSFE TWH CPEZ IUNM
%KTͱd47(d IUNM IFBEུIFBE CPEZ TWHXJEUIIFJHIU DJSDMFDYDZ SpMMSFE TWH CPEZ IUNM
JOMJOF47( ಥવͷؙ
%KTͱd47(d 9.-Ͱ͔͚Δʂ Ξχϝʔγϣϯʹڧ͍ʂ *OTQFDUPSͰݟΒΕΔʂ ֦େॖখʹڧ͍ʂ ରʹ 8FC(-Ͱ%ʹʂ ฏ໘ͷඳըΛߴʹߦ͑Δʂ ໘ੵ͕ܾ·͍ͬͯΕҰఆͷύϑΥʔϚϯε ը૾ϑΥʔϚοτͰอଘͰ͖Δʂ
http://dev.opera.com/articl
%KTͷྲྀΕ
%KTͷྲྀΕ σʔλ࡞Δ 47(ͷ४උΛ͢Δ %0.ͱσʔλΛൺֱ͢Δ Γͳ͍෦Λσʔλ͔Β%0.Λੜ BUUSΛ͍͡Δ
αϯϓϧͰઆ໌
%KTͷྲྀΕ)5.- جຊ͜ΕͰͣͬͱ͍͖·͢ <!doctype html> <html> <head> <meta charset="utf-8"> <title>D3.js on
GTUG Girls Tokyo</title> <style> .axis path, .axis line { fill: none; stroke: grey; } </style> </head> <body> <script type="text/javascript" src="//code.jquery.com/jquery-2.1.1.min.js"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/ d3.min.js"></script> <script type="text/javascript" src="./src/main.js"></script> </body> </html>
%KTͷྲྀΕ8FC 8FC্͓͛ͯ͘ͱ"KBYͱ͔͑ͯศརͰ͢ python -m http.server 5000 python -m SimpleHTTPServer 5000
plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root => ".")->to_app' ruby -run -e httpd -- --port=5000 . ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port => 5000, :DocumentRoot => ".").start' http://blog.kamipo.net/entry/2013/02/20/122225
%KTͷྲྀΕσʔλ σʔλΛ࡞Γ·͢ ͜͏͍͏ͷ࡞͓ͬͯ͘ͱศར // データ生成ユーティリティ var dataGenerator = function(len, gen){
var array = [], i = 0; for(i = 0; i < len; i++){ array.push(gen ? gen(i) : i); } return array; }; // データ生成 var data = dataGenerator(100, function(i){ return { id: i, name: "name "+ i, x: 0|Math.random() * width, y: 0|Math.random() * height }; });
%KTͷྲྀΕ47( TWH ࡞Γ // var svg = d3.select("body").append("svg") .attr({width:
WIDTH, height: HEIGHT}); var main = svg.append("g") .attr({ width: width, height: height, transform: “translate("+margin+","+margin+")" }); 初出 * (selection) d3.select * (selection) selection.append * (selection) selection.attr
%KTͷྲྀΕσʔλͱ%0.ͷඥ͚ σʔλͷඥ͚ var circle = // 現状の取得 main.selectAll("g.circle") // データのヒモ付
.data(data) // データ > 現状(DOM)の部分を取得 .enter() // "g"要素を追加し、classをセット .append("g").attr({"class": "circle"}); 初出 * (selection) selection.selectAll * (selection) selection.data * (selection) selection.enter
%KTͷྲྀΕσʔλ͔ΒυΩϡϝϯτ σʔλ͔Βͷཁૉଐੑ circle.append("circle").attr({ r: 10, cx: function(d){ return d.x; },
cy: function(d){ return d.y; }, fill: "red" });
None
%KTͷྲྀΕDPMPS ৭Λऔಘͯ͠ΈΑ͏ var color = d3.scale.category20(); circle.append("circle").attr({ r: 10, cx:
function(d){ return d.x; }, cy: function(d){ return d.y; }, fill: function(d, i){ return color(i); } }); 初出 * (scale) d3.scale.category20
None
%KTͷྲྀΕ σʔλ࡞Δ 47(ͷ४උΛ͢Δ %0.ͱσʔλΛൺֱ͢Δ Γͳ͍෦Λσʔλ͔Β%0.Λੜ BUUSΛ͍͡Δ
4FMFDUJPO ඥ͚ͨσʔλ طଘͷ%0. FYJU TFMFDUJPO FOUFS
4FMFDUJPO ྫ͑ ඥ͚ͨσʔλ طଘͷ%0. FYJU TFMFDUJPO FOUFS ଐੑɾελΠϧɾςΩ ετͷมߋͳͲΛߦ͏ ৽نʹ%0.ΛՃ
͠ɺಉ࣌ʹଐੑɾελ ΠϧɾςΩετΛηο τ͢Δ طଘͷ%0.Λআ͠ ͨΓɺಁ໌Λ্͛ͨ ΓΛߦ͏
%KTͰάϥϑ
άϥϑ ৽͍͠ ETDBMFPSEJOBM TDBMFSBOHF#BOET TDBMFEPNBJO ETDBMFMJOFBS TDBMFSBOHF EFYUFOUENJOENBY ETWHBYJT TFMFDUJPODBMM
άϥϑ σʔλ࡞ // データ生成 var data = dataGenerator(10, function(i){ return
{ id: i, name: "name "+ i, // height よりも大きい! y: 0|Math.random() * 1000 }; });
άϥϑ σʔλཧ ΞΫηαΛࢦఆ͢Δ͜ͱͰɺྻ͔Βॊೈ ʹ࠷େɾ࠷খɾൣғΛऔΓग़ͤΔ ଞʹฏۉͱ͔தԝͳͲՄೳ // データの調査 var min =
d3.min(data, function(d){ return d.y;}), max = d3.max(data, function(d){ return d.y;}), extent = d3.extent(data, function(d){ return d.y;}); アクセサ 初出 * (number) d3.min / d3.max * ([number, number]) d3.extent
άϥϑ εέʔϧ࡞ॏཁʂTDBMFΛ੍͢͜ͱඞਢ var x = d3.scale.ordinal() .domain(data.map(function(d){ return d.id; }))
.rangeBands([0, width], 0.2), y = d3.scale.linear() .domain([0, max]) .range([height, 0]); // [0, height]じゃない! EPNBJO ೖྗ SBOHF ग़ྗ ͷม RVBOUJUBUJWFPSEJOBMͷछྨ RVBOUJUBUJWFʮൣғൣғʯ PSEJOBMʮ*%ൣғʯ ൣғใͷఏڙ 初出 * (scale) d3.scale.linear / d3.scale.ordinal
άϥϑ TDBMFͷSBOHF͕< IFJHIU>Ͱͳ͘ <IFJHIU >ͩͬͨཧ༝ ϒϥβ্Ͱࠨ্͕ ӈʹߦ͚
Y ɺԼʹߦ͚ Z େ͖͍΄Ͳʮߴ͍ʯʮখ͍͞ʯ ߴ͞ͷ΄͏ΛௐʮIFJHIUߴ͞ʯ
άϥϑ ཁૉͷඳըͷ४උ var bar = // 現状の取得 main.selectAll("g.bar") // データのヒモ付
.data(data) // データ > 現状(DOM)の部分を取得 .enter() // "g"要素を追加し、classをセット .append("g") .attr({ "class": "bar", transform: function(d){ // コツ: 位置合わせをやっておく return “translate("+x(d.id)+","+height+")"; } });
άϥϑ ཁૉͷඳըͷ४උ var bar = // 現状の取得 main.selectAll("g.bar") // データのヒモ付
.data(data) // データ > 現状(DOM)の部分を取得 .enter() // "g"要素を追加し、classをセット .append("g") .attr({ "class": "bar", transform: function(d){ // コツ: 位置合わせをやっておく return “translate("+x(d.id)+","+height+")"; } }); 描画上の一番下に合わせる height
άϥϑ ཁૉͷඳը bar.append("rect").attr({ width: x.rangeBand(), height: function(d){ return height -
y(d.y); }, y: function(d){ return y(d.y) - height; }, fill: "red" }); // ラベルも付けておきます bar.append("text").text(function(d){ return d.y;});
None
άϥϑ ࣠ͷ࡞ var xaxis = main.append("g").call(d3.svg.axis().scale(x)).attr({ "class": "axis", transform: "translate(0,"+height+")"
}); var yaxis = main.append(“g").call(d3.svg.axis().scale(y).orient("left")) .attr({ "class": "axis" }); 初出 * (svg) d3.svg.axis * (selection) selection.call
None
ؓٳ47(ཁૉ
47(Ͱ͑Δλά TWH H EFGT TZNCPM VTF QBUI MJOF SFDU DJSDMF
FMMJQTF QPMZMJOF QPMZHPO ! ͋ͱϑΟϧλʔपΓ͕ͨ͘͞Μ͋Γ·͕͢ ΄ͱΜͲ͏ػձ͋Γ·ͤΜ
47( ( 47( ͜ͷλάແ͍ͱ࢝·Γ·ͤΜʂඞͣ࡞Γ·͢ ( ࢠཁૉΛάϧʔϓԽ͢Δ͜ͱ͕Ͱ͖·͢ɻ ྫ͑ʮͱϥϕϧʯͷҐஔΛಉ࣌ʹม͑Δʹ (ཁૉͷҐஔΛ੍ޚ͢ΕҰͰߦ͑·͢͠ɺΞ χϝʔγϣϯͷ࣌ख͕ؒݮΓ·͢ ͱʹXJEUIIFJHIUUSBOTGPSNଐੑΛऔΓ·͢
1"5) ͯ͢ͷඳըཁૉ HSBQIJDTFMFNFOU ͜ΕͷBMJBT ͩͱߟ͑Δ͜ͱ͕Ͱ͖·͢ EଐੑͰσʔλύεจࣈྻΛ͢͜ͱͰඳըͤ͞·͢ FH.--[ ͔Β։࢝
. ͠ɺ ʹҠಈ - ɺ ʹҠಈͯ͠ɺด࿏Λ࡞Δ [ pMMଐੑด࿏ͷதΛࢦఆͨ͠৭ͰృΓͭͿ͢ TUSPLFଐੑύεΛࢦఆͨ͠৭Ͱඳ͘ TUSPLFXJEUIଐੑύεͷઢͷଠ͞Λࢦఆ͢Δ
$*3$-& 3&$5 -*/& &--*14& DJSDMFཁૉ SଐੑܘΛࢦఆ DYDZଐੑத৺ͷYZ࠲ඪΛࢦఆ SFDUཁૉ XJEUIIFJHIUଐੑۣܗͷ෯ߴ͞Λࢦఆ YZଐੑۣܗͷࠨ্ͷҐஔΛࢦఆ
SYSZଐੑؙ֯ͷପԁܘΛࢦఆ MJOFཁૉ YYZZଐੑͷ࠲ඪΛࢦఆ FMMJQTFཁૉ DYDZଐੑପԁͷத৺Ґஔͷ࠲ඪΛࢦఆ SYSZଐੑପԁͷܘΛࢦఆ
5SBOTGPSNଐੑ USBOTGPSNଐੑʹจࣈྻͰԼهΛࢦఆ͢Δ ͜ͱ͕Ͱ͖·͢ NBUSJYมܗߦྻ ཁૉ Λࢦఆ USBOTMBUFฒߦҠಈFHUSBOTGPSN 9 :
SPUBUFճసFHSPUBUF TLFX9TLFX:ࣼ ฏߦ࢛ลܗΈ͍ͨʹ௵ ͢ FHTLFX9 TDBMF֦େॖখFHTDBMF TDBMF
%KTͰંઢάϥϑ
ંઢάϥϑ ৽͍͠ EUJNFTDBMF TFMFDUJPOEBUVN ETWHMJOF
σʔλ࡞ // データ生成 var data = dataGenerator(10, function(i){ var now
= Date.now(); return { id: i, name: "name "+ i, x: new Date(now + 60000 * i), // 一分おき y: 0|Math.random() * 1000 }; }); ંઢάϥϑ
εέʔϧ࡞ // スケールの生成 var x = d3.time.scale() .domain(d3.extent(data, function(d){ return
d.x; })) .range([0, width]), y = d3.scale.linear().domain([0, max]).range([height, 0]); ࣌ؒʹಛԽͨ͠εέʔϧ ࣗಈͰ࣌ؒͷ۠ؒΛௐͯ͘͠ΕΔͨΊɺBYJTʹར༻͠ ͨ࣌ʹศར ɺ࢛ظɺ݄ɺɺ࣌ɺɺͳͲॊೈʂ 初出 * (scale) d3.time.scale ંઢάϥϑ
ཁૉඳըϢʔςΟϦςΟ var line = d3.svg.line() .x(function(d){ return x(d.x); }) .y(function(d){
return y(d.y); }); // PATHDATA=line([{x: X, y:Y},{}]) 配列を受けて、PathDataの文字列を返す ྨࣅͷTWHͱͯ͠BSFB BSD EJBHPOBMͳ Ͳ͕͋Δ 初出 * (function) d3.svg.line ંઢάϥϑ
ඳը var serie = // 現状の取得 main.append("path") // データのヒモ付 .datum(data)
.attr({ d: line, fill: "none", stroke: color(0) }); 初出 * (selection) selection.datum path要素に対して、配列を紐付ける ંઢάϥϑ
None
σʔλͷ४උ ΦϒδΣΫτͷྻͷྻ // データ生成 var series = dataGenerator(3, function(i){ return
{ name: "series " + i, data: dataGenerator(10, function(j){ var now = Date.now(); return { id: j, name: "name "+ j, x: new Date(now + 60000 * j), // 一分おき y: 0|Math.random() * 1000 }; }) }; }); ෳͷંઢάϥϑ
σʔλͷൣғΛऔಘ ճNJONBYΛ͏ var maxY = d3.max(series, function(serie){ return d3.max(serie.data, function(d){
return d.y;}); }); var minX = d3.min(series, function(serie){ return d3.min(serie.data, function(d){ return d.x;}); }), maxX = d3.max(series, function(serie){ return d3.max(serie.data, function(d){ return d.x;}); }); ෳͷંઢάϥϑ
ඥ͚ͯඳը var serie = // 現状の取得 main.selectAll("g.serie") // データのヒモ付 .data(series)
.enter() .append("g").attr({"class": "serie"}); ! serie.append("path").attr({ d: function(d){ return line(d.data); }, fill: "none", stroke: function(d){ return color(d.name); } }); ෳͷંઢάϥϑ
None
0OFNPSFUIJOH ֤ϙΠϯτʹυοτͱΛ var serie = // 現状の取得 main.selectAll("g.serie") // データのヒモ付
.data(series) .enter() .append("g").attr({ "class": "serie", fill: function(d){ return color(d.name); } }); 子要素すべてのfillを指定
ඥ͚ͯඳը var point = serie.selectAll("g.point") .data(function(d){ return d.data;}).enter() .append("g").attr({ "class":
"point", transform: function(d){ return "translate("+x(d.x)+","+y(d.y)+")"; } }); point.append("circle").attr({r: 5}); point.append("text").text(function(d){ return d.y; }).attr({dy: -8}); 0OFNPSFUIJOH
None
"OJNBUJPO
TFMFDUJPOUSBOTJUJPO ʹ͍ͭͮͯBUUS Λࢦఆ͢Δ͜ͱͰݱࡏࢦఆͨ͠BUUSͷ Ξχϝʔγϣϯ͕ߦΘΕ·͢ FH ETFMFDU lDJSDMFz USBOTJUJPO BUU S
\pMMlHSFFOz^
"OJNBUJPO ߋ৽ॲཧؔ લ var updateLine = function(){ // スケールのドメイン更新 x.domain(d3.extent(data,
function(d){ return d.x; })); var max = d3.max(data, function(d){ return d.y;}); y.domain([0, max]); ! // 折線の変形アニメーション serie.transition() .attr({ d: line }); ! これでアニメーションを利用できる!
"OJNBUJPO ߋ৽ॲཧؔ த൫ // 新たにデータが増えたのでselection撮り直し var point = main.selectAll("g.point").data(data); //
データ追加分の処理 var newpoint = point.enter().append(“g") .attr({"class": "point", fill: color(0), transform: function(d){ return "translate("+x(d.x)+","+y(d.y)+")"; } }); newpoint.append("circle").attr({ r: 5 }); newpoint.append("text").text(function(d){return d.y;}).attr({dy:-8}); // 既存データのアニメーション point.transition().attr({ transform: function(d){ return "translate("+x(d.x)+","+y(d.y)+")"; } });
"OJNBUJPO ߋ৽ॲཧؔ ޙ // 軸の更新 xaxis.call(d3.svg.axis().scale(x)); yaxis.call(d3.svg.axis().scale(y).orient("left")); };
None
-BZPVU
-BZPVUͱ ࠶ར༻ՄೳͳΞϧΰϦζϜͷմ جຊతʹʮݩσʔλʯ͔Βʮ͋ΔՄࢹԽ දݱʹඞཁͳσʔλʯͷมϓϩάϥϜ ЋͰΞχϝʔγϣϯΠϕϯτͳͲ͕͍ͭ ͯ͘Δ
None
ΩϥΩϥԵ
-BZPVU γϟϨΦπͳՄࢹԽΛ࡞Δʹɺͨ͘͞Μ ͷม͕ඞཁͰ͢ ྫ͑ɺؔάϥϑΛ࡞͢ΔʹɺʮͲ ͷͱͲͷΛͭͳ͙͔ʯʮͷฒͼͲ ͏͢Δ͔ʯʮͷҐஔ࠲ඪʯʮΛ݁Ϳ ހͷۂ͕Γ۩߹Ͳ͏͢Δ͔ʯͳͲ ͜ΕΒͷܭࢉΛҰ͔Β࣮͠ͳ͍ͰࡁΉΑ ͏ʹ͢ΔͨΊʹ-BZPVU͕ଘࡏ͠·͢
-BZPVU ࠓ༨ྗ͕͋Δਓ ࣮ʹࣗ৴͕͋Δਓ αϙʔτ͠·͢
)BOET0O
࣌ؒ·ͰϋϯζΦϯ Ξχϝʔγϣϯ·ͰҰखݩͰಈ͔ͯ͠Έͯ ͍ͩ͘͞ ࢼ͍ͨ͜͠ͱ͕͋Δਓ࣮Ξγετ͠ ·͢ ࢼ͍ͨ͜͠ͱͳ͍ਓ૬ஊ͍ͯͩ͘͠͞ Ξγετ͠·͢
ؾʹͳΔσʔλ
౦ژϝτϩΦʔϓϯσʔλ׆༻ίϯςετ http://tokyometro10th.jp/future/opendata/
ҪݝΦʔϓϯσʔλϥΠϒϥϦ http://www.pref.fukui.lg.jp/doc/toukei-jouhou/opendata/
ͦͷଞͷࢿྉ
47(ʹ͍ͭͯͪ͜ΒΛ IUUQXXXTMJEFTIBSFOFULBEPQQFJOMJOFTWH IUUQXXXTMJEFTIBSFOFUTTVTFSEDTWH NBOJBYDTTOJUFBGUFSEBSLTWHNBUTVEB https://github.com/muddydixon/html5conference
ՄࢹԽʹ͍ͭͯͪ͜ΒΛ
σʔλՄࢹԽͷϚϯτϥ Overview First, Zoom and Filter, Then Details-on-Demand Overview First,
Zoom and Filter, Then Details-on-Demand Overview First, Zoom and Filter, Then Details-on-Demand Ben Shneiderman $