我使用InfoVis toolkit中的this RGraph example来绘制节点。这是我的节点在JSON中的样子:
{"id":"parentId","name":"parent","adjacencies":[{"nodeTo":"missingChildId","nodeFrom":"parentId"}]}问题是missingChildId引用了一个不存在的节点。当前,InfoVis绘制了一条从parent节点到其标记为"missingChildId“的节点的边。
我不希望这个边缘被画出来。
类似地,函数node.eachAdjacency给出了图中不存在的节点。是否有某种类型的筛选器来排序那些丢失的节点?
谢谢。
发布于 2013-04-30 18:30:07
您的json数据似乎有几个问题。
1:如果在json数据的邻接关系中指定"nodeFrom“和"nodeTo”,那么infovis将创建这些邻接关系。在理想情况下,您的json数据中不应该有这样的邻接关系。
2:此外,邻接关系中的nodeTo和nodeFrom指向您要引用的节点的in,并且in应该是唯一的。从你的数据看,"missingChildId“和"parentId”似乎并不是唯一的。你确定那是唯一的ids吗?
我认为您必须确保每个节点都有唯一的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); 然后使用此属性对其进行过滤。
https://stackoverflow.com/questions/16267599
复制相似问题