0

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

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

问题是missingChildId指的是一个不存在的节点。目前,InfoVis 从parent节点绘制一条边到它标记为“missingChildId”的节点。

我不想画这条边。

同样,该函数node.eachAdjacency给出了图中不存在的节点。是否有某种过滤器可以对那些缺失的节点进行排序?

谢谢你。

4

1 回答 1

0

您的 json 数据似乎存在一些问题。

1:如果您在 json 数据的邻接中指定“nodeFrom”和“nodeTo”,则 infovis 将创建这些邻接。在理想情况下,您的 json 数据中不应该有这样的邻接关系。

2:此外,邻接关系中的nodeTo和nodeFrom指向您要引用的节点的ID,并且ID应该是唯一的。从您的数据看来,“missingChildId”和“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); 

然后使用此属性过滤它们。

于 2013-04-30T10:30:07.387 回答