3

如何将 D3.JS树布局CrossFilter连接起来?

假设我有这个示例树。然后我提取一个树节点列表,作为 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)

还是有更好的方法?

4

1 回答 1

2

由于它是一棵树,因此您可以使用每个元素的整个路径作为维度键。那么任何分支都是维度的连续范围。

例如,这会自动分类为分支: A.1 A.2 A.3 B.1

然后将另一个维度键入大小,并使用 treeDim.top(Infinity) 或 .group() 获取您的项目。它们不是树形结构,但至少它们是有序的,您可以使用 d3.nest 将它们制作成一棵树。

...如果你还想过滤分支,你已经设置好了,只需将范围设置为 [A,B)

于 2014-03-19T23:01:15.523 回答