2013-04-28 4 views
0

InfoVis toolkit에서 this RGraph example을 사용하여 노드를 그립니다.JavaScript InfoVis : 누락 된 노드로 가장자리 숨기기

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

문제는 missingChildId가 아닌 기존 노드를 의미한다는 것입니다 : 내 노드가 JSON에서 어떻게 보이는지이다. 현재 InfoVis는 parent 노드에서 "missingChildId"라는 노드로 가장자리를 그립니다.

이 모서리를 그려보고 싶지 않습니다.

마찬가지로 함수 node.eachAdjacency은 그래프에 존재하지 않는 노드를 제공합니다. 누락 된 노드를 분류 할 수있는 일종의 필터가 있습니까?

감사합니다.

답변

0

json 데이터에 몇 가지 문제가있는 것으로 보입니다.

1 : json 데이터의 인접 영역에 "nodeFrom"및 "nodeTo"를 지정하면 infovis가 이러한 인접성을 만듭니다. 이상적인 경우에는 json 데이터에 그러한 인접성을 가져서는 안됩니다.

2 : 또한 adjacencies의 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); 

그런 다음이 속성을 사용하여 필터링하십시오.

+0

"마찬가지로 그래프의 노드/인접성을 반복 할 때마다 ID를 사용하여 이러한 원치 않는 모든 노드를 필터링해야합니다." 이것이 내가 한 일이다. 고맙습니다. –