D3.js

d3.jsで力指向グラフを使って遊ぶ2

投稿日:

力指向グラフ(force layout)でノードの追加・削除をやってみた

 

 

緑のボックスをダブルクリックで追加・グレーのボックスをダブルクリックで削除

  1. Backbone.jsを意識して、上位ではオブジェクトの場所だけを指定して、下位でイベントとオブジェクトの内容を決める形にしてみた
  2. なので、上位からは基本的にインスタンス.el.~で操作する.ただし、よく使うattrとかonとかはメソッドを書けばD3.jsと同じように扱えた.transitionとかはelから使っている.
  3. D3の仕様なのかわからないけど、コールバック関数はカッコを書かない。書くと認識しない.
  4. プロパティはどうしてもコールバック関数から認識できなかった.クラスの一番外側にローカル変数を定義することで共通化できた.危険かもしれない.たぶん_とかのbindとかを使うのだろう.これはまた勉強する. *ファットアローを使う
  5. Force Layoutでは、nodesという配列とnodeというDOMセレクションを両方操作しないといけない.しかも、相互に認識できなかった.
  6. Force Layoutにノードを追加するには配列にデータを追加して、その配列をselectAll().data().enter()で選んで追加分を増やす
  7. ノードの削除はもう少し複雑で、単純にselectAll().data().exit().remove()だけでは難しい.Force Layoutではindexというプロパティをもって記憶しているけど、これは単なる配列の順番なので、配列の途中から削除していくと後から順番が狂ってくる.そこで、nodesにidというプロパティを持たせて、data()の第2引数でidにひもづけることで削除するセレクションを指定することができる

 

力学モデル (グラフ描画アルゴリズム)

グラフの自動レイアウトに挑戦 #1 ばねモデル

 

Force Editor + Pan/Zoom

-D3.js
-

執筆者:

関連記事

D3.jsでマウスオーバーでオブジェクトをちょっと明るくする

D3にはd3.select(this)という便利なイディオムがあるのです 色はd3.rgbというオブジェクトにすると、brighter …

簡単にグラフが作成できるC3.jsをRailsでつかってみた

By: Nguyen Hung Vu – CC BY 2.0 目次1 C3.js2 gon3 複数の時系列データで一方にはある時点のデータがあるけど他方にはある時点のデータがないみたいな場 …

d3.jsで棒グラフを作成する

  前提 SVGでビジュアライゼーションことはじめ~d3.js   目次1 データの数だけ棒を表示する2 scale3 テキストラベルをつける4 JSONで読む データの数だけ棒を …

d3.jsのグラフにマウスオーバーでツールチップをつける

決め打ちで スタイルでフォントサイズを指定した ツールチップがはみ出す場合の条件と処理を追加

 

Rails4とD3.jsでローソク足グラフを描く〜Rails準備編

By: Manuel Calavera – CC BY 2.0 前回 Rails4で複雑な検索〜Ransack こちらのサンプルを使用させてもらいました。 datawarehouse.we …