2013-03-13 102 views
3

我該如何連接D3.JS Tree LayoutCrossFilterD3 JS佈局樹連接到CrossFilter

假設我有this example tree。然後我提取一個樹節點列表,它作爲CrossFilter的輸入數據集。

// Compute the new tree layout. 
var nodes = tree.nodes(root); 
var data = crossfilter(nodes); 
var bySize = data.dimension(function(d) { return d.size; }); 

然後我想根據大小進行過濾,並根據此過濾動態更新樹。有關如何更新樹數據源的任何想法?

我需要寫一個函數來找回原來的輸入樹數據結構,如:

treeJson = graph2tree(filteredNodes, filteredEdges)

或者有沒有更好的方法?

回答

2

因爲它是一棵樹,所以可以使用每個元素的整個路徑作爲維度鍵。那麼任何分支都是維度的連續範圍。

E.g.這種自動分揀到分支: A.1 A.2 A.3 B.1

然後有鍵控大小另一個維度,並使用treeDim.top(無窮大)或。集團(),以獲得您的項目。它們不是樹形結構,但至少它們是有序的,你可以使用d3.nest將它們變成一棵樹。

...如果您還想過濾分支,您可以設置,例如設置範圍爲[A,B]