我有相对大量的图形数据(超过1000个节点,超过2000个边)。 Cytoscape.js无法呈现此数量的数据,因此我决定做一些交互式的图形探索。我想从图根开始(它是DAG),并且用户可以在单击它们之后探索节点。

我知道我可以在cytoscape.js之外做到这一点,但是我想知道是否可以创建一个我可以操纵的节点/边缘集合(删除除根及其邻居之外的所有节点),然后用作数据源(获取子节点)的节点数)。 Cytoscape使图形处理变得非常容易,不需要重新发明轮子就很好了。

我尝试根据要馈给该图的JSON数据创建cy.collection,但似乎它不接受与cy.load相同的数据格式。

最佳答案

我可以通过创建两个cytoscape对象来解决此问题。我正在将所有图形数据加载到名为allcy的变量中:

var allcy = cytoscape({
    headless: true,
});


请注意,它是无头的,因此它不会尝试以任何方式呈现节点。

然后我创建正常的“工作” cy var

var cy = cytoscape({
    container: document.getElementById('thegraph'),
});


我将所有数据加载到allcy

    allcy.load(response); //response is json graph data I got from xmlhttp request


我将根及其附近添加到cy并重新加载布局。

    cy.add(allcy.nodes().roots().closedNeighborhood());
    cy.layout(layoutSettings);


瞧!我呈现的cy图中只有根节点。现在,我需要根据需要从allcy添加其他节点,但我想我会设法做到的。希望它对某人有用。

09-17 14:07
查看更多