2017-12-11 3 views
0

터미널에서 nodejs를 사용하는 cytoscapejs를 사용하여 간단한 javascript를 작성합니다. 내 목표는 노드와 가장자리 목록 및 레이아웃 주어진 모든 노드의 위치를 ​​얻는 것입니다. 아래 코드를 실행합니다 :Cytoscapejs layput 모든 노드에 대해 0을 부여하십시오.

var cytoscape = require('cytoscape'); 

var cy = cytoscape({ 

    elements: [ // list of graph elements to start with 
    { // node a 
     data: { id: 'a' } 
    }, 
    { // node b 
     data: { id: 'b' } 
    }, 
    { // node b 
     data: { id: 'c' } 
    }, 
    { // node b 
     data: { id: 'd' } 
    }, 
    { // node b 
     data: { id: 'e' } 
    }, 
    { // node b 
     data: { id: 'f' } 
    }, 
    { // node b 
     data: { id: 'g' } 
    }, 
    { // node b 
     data: { id: 'h' } 
    }, 
    { // edge ab 
     data: { id: 'ab', source: 'a', target: 'b' } 
    }, 
    { // edge ab 
     data: { id: 'bc', source: 'b', target: 'c' } 
    }, 
    { // edge ab 
     data: { id: 'cd', source: 'c', target: 'd' } 
    }, 
    { // edge ab 
     data: { id: 'de', source: 'd', target: 'e' } 
    }, 
    { // edge ab 
     data: { id: 'ef', source: 'e', target: 'f' } 
    }, 
    { // edge ab 
     data: { id: 'fg', source: 'f', target: 'g' } 
    }, 
    { // edge ab 
     data: { id: 'gh', source: 'g', target: 'h' } 
    } 
    ], 

    style: [ // the stylesheet for the graph 
    { 
     selector: 'node', 
     style: { 
     'background-color': '#666', 
     'label': 'data(id)' 
     } 
    }, 

    { 
     selector: 'edge', 
     style: { 
     'width': 3, 
     'line-color': '#ccc', 
     'target-arrow-color': '#ccc', 
     'target-arrow-shape': 'triangle' 
     } 
    } 
    ], 
    layout: {name: "cose",randomize: true} 
}); 

cy.nodes().forEach(function(s){ 
    console.log(s.position().x) 
    console.log(s.position().y) 
}); 

위치 결과를 볼 때 모든 노드가 0이됩니다. 다른 유형의 레이아웃을 사용하는 경우 0 이외의 결과가 나타납니다. 레이아웃을 위해 cose를 올바르게 사용하는 방법은 무엇입니까? 고맙습니다.

답변

1

연속/비동기 레이아웃을 실행 중이며 이산/동기 레이아웃처럼 완성 될 것으로 예상됩니다.

레이아웃이 완료 될 때까지 기다리십시오. 초기화시 레이아웃을 지정하려면 cy.ready()을 사용하거나 을 만들고 layoutstop (예 : layout.on('layoutstop',() => { /* ... */ }))에 바인딩합니다.

+0

이전에 Cytoscape이 비동기로 실행되었음을 알지 못했습니다. 이제 해결했습니다. – Bharata

관련 문제