首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript InfoVis:隐藏缺少节点的边

JavaScript InfoVis:隐藏缺少节点的边
EN

Stack Overflow用户
提问于 2013-04-29 04:39:42
回答 1查看 522关注 0票数 0

我使用InfoVis toolkit中的this RGraph example来绘制节点。这是我的节点在JSON中的样子:

代码语言:javascript
复制
{"id":"parentId","name":"parent","adjacencies":[{"nodeTo":"missingChildId","nodeFrom":"parentId"}]}

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

我不希望这个边缘被画出来。

类似地,函数node.eachAdjacency给出了图中不存在的节点。是否有某种类型的筛选器来排序那些丢失的节点?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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“的节点。

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

类似地,每次迭代图的节点/邻接关系时,都必须使用这些节点的id来过滤掉所有这些不需要的节点。您还可以在不需要的节点上设置自定义属性。

代码语言:javascript
复制
node.setData("ignore",true); 

然后使用此属性对其进行过滤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16267599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档