如何在渲染之前操作 cytoscape.js 图形数据
How to manipulate cytoscape.js graph data before rendering
我有相对大量的图形数据(超过1000个节点,超过2000条边)。Cytoscape.js无法呈现如此大量的数据,所以我决定做一些交互式图形探索。我想从图根(它是 DAG)开始,用户在单击节点后将能够探索它们。
我知道我可以在 cytoscape.js 之外做到这一点,但我想知道我是否可以创建一个我将操作的节点/边缘集合(删除除根及其邻居之外的所有节点),然后用作数据源(获取节点的子节点)。Cytoscape使图形处理变得非常容易,如果不需要重新发明轮子,那就太好了。
我尝试根据我提供给图形的 JSON 数据创建 cy.collection,但它似乎不接受与 cy.load 相同的数据格式。
我能够通过创建两个细胞景观对象来解决这个问题。我正在将所有图形数据加载到我调用的变量中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
添加其他节点,但我想我会设法做到这一点。希望它对某人派上用场。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 如何在渲染之前操作 cytoscape.js 图形数据
- 在Cytoscape JS中撤消删除节点操作
- Cytoscape's同心布局边缘's的长度操作,可能使用cola.js