我有一个可能有大量节点的强制布局,对于图形来说太大而无法响应地呈现。我在想提高系统性能的一种方法是在节点数量太大时通过消除基于入度和出度的节点来修剪图形。
重新计算节点和链接列表有点麻烦,因为链接与节点数组中的索引相关,因此所有链接都需要重新构建。
能够将单个节点标记为排除(类似于某些节点的方式fixed
)并让布局算法跳过这些节点似乎更优雅。这将允许我动态选择要显示的图形子集,同时为每个节点(例如位置)保留尽可能多的状态。
有没有人实施过这样的事情?
更新:
我试图实现过滤器建议,但遇到了一个有趣的错误。该filter
方法似乎返回了一个未实现的对象enter
:
qChart apply limit:2
NODES BEF: [Array[218], enter: function, exit: function, select: function, selectAll: function, attr: function…]
NODES AFT: [Array[210], select: function, selectAll: function, attr: function, classed: function, style: function…]
Uncaught TypeError: Object [object Array] has no method 'enter'
运行以下代码以获取 from BEF
to AFT
:
nodeSubset = nodeSubset.filter(function(n) { return (n.sentCount() <= limit); });
更新 2:
我创建了一个jsfiddle来隔离问题。这个例子实现了我对 ChrisJamesC 答案的解释。当我尝试直接执行他的建议时(将 放在filter
之后data
),随后的调用enter
失败,因为返回的对象filter
没有enter
定义。
目标是使布局仅选择具有 的那些节点active == true
,因此在此示例中,这意味着b
应排除该节点。