我有相对大量的图形数据(超过1000个节点,超过2000个边)。 Cytoscape.js无法呈现此数量的数据,因此我决定做一些交互式的图形探索。我想从图根开始(它是DAG),并且用户可以在单击它们之后探索节点。
我知道我可以在cytoscape.js之外做到这一点,但是我想知道是否可以创建一个我可以操纵的节点/边缘集合(删除除根及其邻居之外的所有节点),然后用作数据源(获取子节点)的节点数)。 Cytoscape使图形处理变得非常容易,不需要重新发明轮子就很好了。
我尝试根据要馈给该图的JSON数据创建cy.collection,但似乎它不接受与cy.load相同的数据格式。
最佳答案
我可以通过创建两个cytoscape对象来解决此问题。我正在将所有图形数据加载到名为allcy
的变量中:
var allcy = cytoscape({
headless: true,
});
请注意,它是无头的,因此它不会尝试以任何方式呈现节点。
然后我创建正常的“工作”
cy
varvar 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
添加其他节点,但我想我会设法做到的。希望它对某人有用。