2016-11-26 5 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" 
    } 
}); 

を私は2つのノード間のエッジを追加する場合、これらの2つのノードが上に置かれ(一緒に崩壊しますお互いに)。 CoSE demo on GitHubに続いて、なぜそれが起こっているのか分かりません。何か案は?問題の

デモ:https://jsfiddle.net/DerekL/mthg1uv5/

あり、3つのノードでなければならない:abcが、abは、互いの上に配置されています。途中でノードbをドラッグすると、ノードaがその下に表示されます。

答えて

1

これが要件を満たしているかどうかは不明ですが、ランダム化をオンにすると問題が解決したようです。そのよう

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

また、レイアウトの種類を変更することによって、それを修正することができます - 私が試した「breadthfirst」と、それは問題ではありませんでした。私はあなたが望むように鼻がなぜ機能しないのか説明するのに十分な精通ではありませんが、うまくいけばそれが助けになります。私の研究から、誰もが看護の代わりに看護師のレイアウトを賞賛しているようですので、それがあなたのニーズを満たすかどうか見ておく価値があります。

+0

ありがとうございます。 –

+0

CoSE Bilkentは、デフォルトでは 'randomize:true'を持っています。他のすべての強制指定レイアウトとは異なります。ランダム化を指定せず、すべてのノードの初期位置が同じ場合、ノード間の距離はゼロになり、強制的なレイアウトでは当然ノードを移動させません。 – maxkfranz

+0

CoSE Bilkentはより少ない出力でより良い出力を実現しますが、付属のCoSEよりもはるかに高価です。 – maxkfranz

関連する問題