d3.jsを使ってみる(3) d3.dataをつかってタグにデータを適応する
Sponsored Links
皆さんこんにちは
お元気ですか。可視化って楽しいと思います。
三度目になって同じことを繰り返しますが…
いよいよd3っぽいことをしてみたいと思います
<head> <meta charset = "utf-8"> </head> <body> <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> <p>あいうえお</p> <p>あいうえお</p> <p>あいうえお</p> <script type="text/javascript"> </script> </body>
<script type="text/javascript"> var datas = [12,36,108]; var p = d3.select("body").selectAll("p"); p.data(datas).text(function(d){ return d }); </script>
気づいている人はいると思いますが、今回はpタグとdatasの長さが同じです。世の中こう都合よくはいきません。
p.dataに含まれるのは3つの種類があります。
update・・・普通に更新される内容
enter・・・追加が必要な内容
exit・・・必要がない
要はこの三種類それぞれについて対応する必要があります。
Update+Enter
<script type="text/javascript"> var datas = [12,36,108,124]; var p = d3.select("body").selectAll("p"); update = p.data(datas) enter = update.enter() update.text(function(d){ return d; }) enter.append("p").text(function(d){ return d; }) </script>
update地点では通常の更新を、enterではそもそもタグが不足しているので、まずは、タグを追加します。
その次にupdateと同じ挙動を行っています。
Update+Exit
<script type="text/javascript"> var datas = [12,36]; var p = d3.select("body").selectAll("p"); update = p.data(datas) exit = update.exit() update.text(function(d){ return d; }) exit.remove() </script>
updateでは同じ動作をしますが、exitについては必要がないのでremoveしています。