获得没有边缘的节点

时间:2017-12-06 17:21:23

标签: javascript cytoscape.js

我在图表中有大量节点,并且通过一些过滤器,我可以使用cy.remove(myCollection)在某些条件下删除一些边缘。

有时会发生节点的所有边缘被移除,因此它独立而没有边缘。在Cytoscape中有没有办法找到没有边缘的节点?

我出类似:

cy.nodes(/*:inside*/).filter(node => node.connectedEdges().size() === 0)

但这会返回一个空集合吗?

2 个答案:

答案 0 :(得分:4)

我遇到了类似的问题:我不得不从图中删除没有边的节点。我使用 node.degree() 解决了这个问题,其中一个函数循环遍历我的图形节点,并找到了程度为0的函数(包括indegree和outdegree,这意味着节点既没有源也没有目标)。

    `cy.nodes(function(element){
        if( element.isNode() && element.degree()<1){
            cy.remove(element)
        }
    })`

希望解决问题可能有用

答案 1 :(得分:1)

对此(迄今为止)的解决方案是,我将通过在节点/边缘上设置数据属性并使用数据属性作为display: "none"来设置样式,而不是操纵图形中的内容。条件。然后这是有效的:

const nodesWithoutEdges = cy.nodes().filter(node => node.connectedEdges(":visible").size() === 0)