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
-

執筆者:

関連記事

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

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

d3.jsで力指向グラフを使って遊ぶ~force layout & zoom & pan

参考 D3をはじめよう 参考 Force Layout 目次1 forceレイアウトのスケルトン2 zoom&pan forceレイアウトのスケルトン forceレイアウトではオブジェクトに力が作用し …

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

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

d3.jsでrectに角丸・半透明・グラデーション・ドロップシャドウ・ライティング効果を追加~主にsvgのこと

目次1 基本になるrectを追加2 角丸3 半透明4 グラデーション5 ドロップシャドウ6 ライティング7 html要素を追加する~foreignObject 基本になるrectを追加 SVG 1.1 …

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

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