![](/img/trans.png)
[英]How do you specify edgeLength for each edge using Dash Cytoscape cola.js but in Python
[英]How do you pass nodes to gapInequalities in cytoscape-cola.js?
layout
字典的gapInequalities
元素的cytoscape.js-cola 文档说:
gapInequalities: undefined, // list of inequality constraints for the gap between the nodes,
// e.g. [{"axis":"y", "left":node1, "right":node2, "gap":25}]
您如何设置在left
和right
值中指定节点的对象?
maxkfranz 在这里有用地指出这些对象需要是集合对象。 这些包含对指定节点(“元素”)的引用,并通过查询 cytoscape.js “核心对象”来创建。 我不清楚的是,鉴于layout
object 需要引用节点元素,并且在layout
告诉如何渲染它们之前不应将元素添加到图中,您如何正确设置这些集合对象?
例如,要指定节点b
应该放在节点a
之上,用什么来代替???a???
和???b???
在下面的代码中?
cy = cytoscape({
elements: [
{ data: { id: 'a' } },
{ data: { id: 'b' } },
. . .
],
layout: {
name: 'cola',
gapInequalities: [
{ axis: 'y', left: ???'a'???, right: ???'b'???, gap: 25 }
. . .
],
. . .
}
. . .
]);
在这种情况下,答案不能是cy.$id('a')
和cy.$id('b')
因为尚未创建cy
object。 您可以通过创建没有元素的cy
object 然后调用cy.add()
将它们放入其中来解决这个问题。但是传递给cytoscape()
的layout
object 会发生什么?
我对cytoscape.js和cola.js都是新手,所以我很可能只是在这里遗漏了一些非常基本的想法。 一个简单的示例显示 function 调用设置对象和调用它们的顺序可能会做到这一点。 在我的应用程序中,节点和边逐渐添加到图表中,并且 animation 需要显示它们正在添加,因此无论如何不要在开始时设置所有元素更有意义。
由于您的节点和边是逐渐添加的,您可以创建没有元素和布局 object 的 cy object。 然后当新节点出现时,您可以将它们添加到图表并应用布局。
cy object 初始化后,每次新节点到来时,应用以下内容:
cy.add(...);
cy.layout({
name: 'cola',
gapInequalities: [{ axis: 'y', left: cy.$id("a"), right: cy.$id("b"), gap: 25 }],
...
}).run();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.