如何找到子图

时间:2015-05-15 07:07:23

标签: javascript jquery cytoscape.js

我正在尝试显示用户包含所选节点的断开连接的有向图的特定子图。所有的父母,父母的父母......和孩子,孩子的孩子,直到根和叶子。我需要隐藏图表的其余部分。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

正如@aksam建议的那样:

var selectedNode = cy.$('node:selected');
var visitedArr = [ selectedNode ];

cy.elements().bfs({ // or dfs
  roots: selectedNode,
  visit: function(i, depth, v, e, u){
    visitedArr.push( v );
  },
  directed: false // or your preference
});

var subgraph = cy.collection( visitedArr );

cy.batch(function(){
  cy.elements().not( subgraph ).addClass('hidden');
  subgraph.removeClass('hidden');
});

答案 1 :(得分:0)

maxkfranz回答给我错误。

根据他的回答,这为我提供了正确的解决方案:

var selectedNode = cy.$('node:selected');
var visitedArr = [ selectedNode ];

cy.elements().bfs({ // or dfs
  roots: selectedNode,
  visit:  function(v, e, u, i, depth){
    visitedArr.push( v );
  },
  directed: false // or your preference
});

var subgraph = cy.collection( visitedArr );

cy.batch(function(){
  cy.nodes().hide();
  subgraph.show();
});