使用Crossfilter突出显示网络节点

时间:2014-06-22 04:42:06

标签: d3.js crossfilter

我有一张带有网络和一些直方图的图表。

对于网络,每个节点都有一些具有连续值的属性。直方图用于节点属性。当用户刷直方图时,是否有一种简单的方法可以突出显示网络中的节点?我可以将网络数据的维度绑定到节点类属性“selectednode”吗?

我检查过dc.js,但似乎不支持网络图。

由于

2 个答案:

答案 0 :(得分:1)

Crossfilter并非真正用于突出显示,因为过滤将从其他维度和组的视图中删除过滤器外部的数据。听起来你不希望未选择的网络节点消失,而是希望突出显示属于选择范围内的属性值的节点。我根据未经过滤的数据(不是基于Crossfilter)直接构建直方图或网络,然后每当刷子事件发生时,重新渲染网络节点,根据属性值检查当前刷子范围。 / p>

答案 1 :(得分:0)

如何使用相同的记录构建两个交叉过滤器?过滤的一个(cfFilt)将按预期工作,其中包含可以过滤的所有内容的维度。突出显示过滤器(cfHigh)将具有一个维度(基于记录ID或身份函数d=>d),该维度通过包含在cfFilt.groupAll()中进行过滤,加上可过滤任何可以过滤的维度突出显示。 (cfFilt().groupAll().reduce()将需要返回记录,而不是计数。我可以在评论中说明如果有人需要知道。)

所以cfHigh.groupAll()返回通过所有过滤和所有突出显示的记录。

这种方法的一个有趣(并且难以实现)的结果是,如果你突出显示某些内容,那么过滤器会使该东西消失,然后该过滤器被移除并且该东西返回,它将一直保持突出显示在此期间没有任何改变突出显示过滤器。