2017-05-03 55 views
1

突出顯示多個邊緣我有一個無向圖是這樣的:Cytoscape中JS

var cy = cytoscape({ 
      container: document.getElementById('cy'), 
      elements: [ 
      // nodes 
      { data: { id: 'a' } }, 
      { data: { id: 'b' } }, 
      { data: { id: 'c' } }, 
      { data: { id: 'd' } }, 

      // edges 
      { 
       data: { 
       id: 'ab', 
       source: 'a', 
       target: 'b' 
       } 
      }, 
      { 
       data: { 
       id: 'bc', 
       source: 'b', 
       target: 'c' 
       } 
      }, 
      { 
       data: { 
       id: 'cd', 
       source: 'c', 
       target: 'd' 
       } 
      } 
      ], 
      style: [ 
      { 
       selector: 'node', 
       style: { 
       shape: 'hexagon', 
       'background-color': 'red', 
       label: 'data(id)' 
       } 
      }], 
      layout: { 
      name: 'grid' 
      } 
     }); 

正如你可以看到你可以通過使用cdda。我試圖實現的是,如果邊緣ab突出顯示,邊緣bccd也將突出顯示。有沒有辦法做到這一點?我在互聯網上找不到任何來源......謝謝。

+0

我不清楚你的意思。你想突出顯示組件中的所有邊緣?在附近?還有別的嗎? – maxkfranz

+0

@maxkfranz我想突出顯示一條路徑。我實際上將路徑傳遞給節點。 – jason

+0

@maxkfranz我的意思是如果你可以從'a'到'd'並且你知道路徑,我想突出顯示所有路徑上的節點和邊緣。 – jason

回答

1

查看包含的算法,如Floyd-WarshallDijkstra。從它們的輸出中,您應該能夠爲相關邊緣生成突出顯示。

Ex。

var dijkstra = cy.elements().dijkstra('#an_id') 
var path = dijkstra.pathTo(cy.elements('node#another_id')) 

path.forEach(function(ele){ 
    if (ele.isEdge()){ 
    ele.addClass("class_that_has_highlight_styling") 
    } 
}) 
+0

我沒有確定路徑的問題,我無法突出顯示所選路徑。 – jason

+0

我加了一個例子 –

+0

它工作!謝謝! – jason