2016-11-26 151 views
1

在這裏,我有一個簡單的圖形演示問題節點:添加邊緣摺疊以COSE佈局

var cy = cytoscape({ 
    container: document.getElementById("stage"), 
    elements: [{ 
     data: {id: "a", value: 0} 
    }, { 
     data: {id: "b", value: 1} 
    }, { 
     data: {id: "ab", source: "a", target: "b", weight: 10} 
    }, { 
     data: {id: "c", value: 2} 
    }], 
    style: [{ 
     selector: "node", 
     style: { 
      content: "data(id)", 
      "text-valign": "center", 
      color: "white", 
      "background-color": "mapData(value, 0, 2, red, blue)" 
     } 
    }], 
    layout: { 
     name: "cose" 
    } 
}); 

出於某種原因,如果我添加兩個節點之間的邊緣,這兩個節點將摺疊到一起(放置在頂部彼此的)。繼CoSE demo on GitHub後,我不知道爲什麼會發生。有任何想法嗎?

演示的問題:https://jsfiddle.net/DerekL/mthg1uv5/

應該有三個節點:abc,但ab被放置在彼此的頂部上。將節點b拖出,您可以看到它下面的節點a

回答

1

不確定這是否符合您的要求,但開啓隨機化似乎可以解決問題。

像這樣:

layout: { 
    name: "cose", 
    randomize: true 
} 

您也可以通過更改佈局類型修復它 - 我想「breadthfirst」,它沒有問題。我不是很精通,足以解釋爲什麼葡萄糖不能如你所願地工作,但希望這有助於。從我的研究來看,每個人似乎都讚美這種膠芯佈局是一種替代品,所以可能值得看看它是否能滿足您的需求。

+0

不是一個壞的解決方案,謝謝, –

+0

默認情況下,CoSE Bilkent只有'randomize:true' - 不同於其他任何力指向的佈局。如果不指定隨機化,並且所有節點具有相同的初始位置,則節點之間的距離爲零,並且強制定向佈局自然不會移動節點。 – maxkfranz

+0

CoSE Bilkent以較少的配置產生更好的輸出,但它比CoSE的包含版本要貴得多。 – maxkfranz