【发布时间】:2012-10-07 02:46:06
【问题描述】:
我想控制我的节点,这样每个节点都是链接的,没有孤立的节点。
我的脚本每 30 秒从 json 查询中添加一对新节点。如果任何一个新节点是现有节点的副本,则图将仅使用唯一节点更新并将其链接到另一个现有节点。
在此过程中,我将移除最旧的节点以在图表上保留最多 10 个节点。正是在这里,我似乎遇到了麻烦。如何移除节点并检查并移除任何散乱的节点、未链接到任何其他节点的节点?
脚本基于on knoren's post on adding new nodes。
this.checkLength = function () {
if (nodes.length > 10) {
var i = links.shift();
nodes.splice(findNodeIndex(i),1);
update();
}
}
【问题讨论】:
-
要删除未使用的节点,您应该在检查是否满足将节点保留在屏幕上的所有条件后,在更新函数中执行 node.exit().remove() 。在这种情况下真的很难说错误在哪里,因为您可能有添加/删除在几个函数之间拆分的节点的逻辑,并且您只显示其中一个......我想您应该只分配一个分数或其他东西每个节点更有可能停留在屏幕上,然后通过 score > x 或其他内容进行简单过滤......这只是一个想法,这就是为什么我将其作为评论而不是答案。
标签: javascript layout graph d3.js force-layout