我有几组节点,我需要每个组在不同的位置围绕它自己的圈子。
我有一个for循环,它将节点添加到图表中,最后获取这些节点,并尝试将它们圆化。
然而,当我运行程序时,节点以网格格式结束。 如何获得预期的行为?
for( group in groups ){
cy.add([
{ group:'nodes', data: { id: 1, customgroup: group}, position:{x: 0,y: 0} },
{ group:'nodes', data: { id: 2, customgroup: group}, position:{x: 0,y: 0} },
{ group:'nodes', data: { id: 3, customgroup: group}, position:{x: 0,y: 0} },
{ group:'nodes', data: { id: 4, customgroup: group}, position:{x: 0,y: 0} },
{ group:'nodes', data: { id: 5, customgroup: group}, position:{x: 0,y: 0} },
{ group:'edges', data: { source: '1',target: '2', weight:1} },
{ group:'edges', data: { source: '2',target: '3', weight:1} },
{ group:'edges', data: { source: '3',target: '4', weight:1} },
{ group:'edges', data: { source: '4',target: '5', weight:1} },
{ group:'edges', data: { source: '5',target: '1', weight:1} }
]);
cy.elements('[customgroup="'+group+'"]').layout({ name: 'circle', radius:1, startAngle: 13*((Math.PI)/8)});
}
感谢您的帮助!
答案 0 :(得分:0)
经过几个小时没有进展,我走开了,在壁炉里烧了一把火,并且有一个苏格兰威士忌。在那一刻我完全忘记了这个问题的那一刻,解决方案就打击了我。
Cytoscape在初始化时可以选择指定节点的布局。当我实现上述操作时,我从init中删除了布局,以避免两次定位节点。
处理此问题的正确方法是设置:
layout: {
name: 'preset',
padding: 10
},
这使我的自定义代码能够正确处理所需的行为,并且还可以防止节点的双重定位。