JavaScript InfoVis:隐藏缺失节点的边



我使用这个来自InfoVis工具包的RGraph示例来绘制节点。这是我的节点在JSON中的样子:

{"id":"parentId","name":"parent","adjacencies":[{"nodeTo":"missingChildId","nodeFrom":"parentId"}]}

问题是missingChildId引用了一个不存在的节点。目前InfoVis从parent节点到一个标记为"missingChildId"的节点绘制一条边。

我不希望这条边被绘制。

类似地,函数node.eachAdjacency给出了图中不存在的节点。是否有某种过滤器将这些缺失的节点分类出来?

谢谢。

您的json数据似乎有几个问题。

1:如果你在json数据中指定"nodeFrom"one_answers"nodeTo"在邻接关系中,那么infovis将创建这些邻接关系。在理想的情况下,你不应该有这样的邻接在你的json数据。

2:此外,邻接关系中的nodeTo和nodeFrom指向您想要引用的节点的id,并且id应该是唯一的。从你的数据看来,"missingchilddid"one_answers"parentId"并不是唯一的。你确定那些是唯一的id吗?

我认为你必须确保每个节点都有一个唯一的id,并在邻接中使用它们。

如果没有办法你可以修复你的json第一个问题,然后一个工作是隐藏那些节点id "missingChildId"。

所以,在你的图形被渲染之后,你可以使用下面的代码来隐藏id为"missingChildId"的节点。

rg.graph.eachNode( function(node){
    if( node.id == "missingChildId" )
        node.setData("alpha",0,"end");
});
rg.graph.animate({
   modes: ['node-property:alpha'],
   duration: 500
});

类似地,每次你迭代节点/邻接的图,你将不得不过滤掉所有这些不需要的节点通过使用他们的id。您还可以在不需要的节点上设置自定义属性。

node.setData("ignore",true); 

相关内容

  • 没有找到相关文章

最新更新