2013-04-28 56 views
0

我使用InfoVis toolkit中的this RGraph example來繪製我的節點。這是我的節點如何看在JSON:JavaScript InfoVis:隱藏缺失節點的邊緣

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

的問題是,missingChildId指的是不存在的節點。目前InfoVis從parent節點繪製一個邊緣到它標記爲「missingChildId」的節點。

我不希望繪製這條邊。

類似的功能node.eachAdjacency給出了圖中不存在的節點。是否有某種過濾器將這些缺失的節點排序出來?

謝謝。

回答

0

你的json數據似乎有幾個問題。

1:如果您在json數據的鄰接處指定了「nodeFrom」和「nodeTo」,那麼infovis將創建這些鄰接關係。在理想的情況下,你的json數據中不應該有這樣的鄰接關係。

2另外,鄰接點中的nodeTo和nodeFrom指向要引用的節點的id,並且id應該是唯一的。從你的數據看來,「missingChildId」和「parentId」不是唯一的。你確定那些是獨一無二的ID嗎?

我認爲你必須確保每個節點都有一個唯一的ID並在相鄰處使用它們。

如果沒有辦法解決第一個問題的問題,那麼一個解決方法是隱藏這些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來過濾掉所有這些不需要的節點。「這就是我所做的。謝謝。 – 2013-05-08 22:15:03