【问题标题】:Getting nodes without edges获取没有边的节点
【发布时间】:2017-12-06 17:21:22
【问题描述】:

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

有时会发生一个节点的所有边都被删除的情况,因此它没有边单独存在。 Cytoscape 有没有办法找到这些没有边的节点?

我出去玩了这样的事情:

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

但这会返回一个空集合?

【问题讨论】:

    标签: javascript cytoscape.js


    【解决方案1】:

    我遇到了类似的问题:我必须从图中删除没有边的节点。我通过使用 node.degree() 和一个函数解决了这个问题,该函数循环遍历我的图形节点并找到度数 = 0 的那些(入度和出度,这意味着节点既没有源也没有目标)。

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

    希望它对解决您的问题有用

    【讨论】:

      【解决方案2】:

      对此(到目前为止)的解决方案是,我将通过在节点/边上设置数据属性并使用display: "none" 使用数据属性作为条件来进行过滤,而不是操纵图中的内容。然后这是工作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2012-07-02
        • 2012-06-03
        相关资源
        最近更新 更多