如何使 Cytoscape.js 中的边不被拦截?
How can I make edges in Cytoscape.js not intercept?
我正在使用 Cytoscape 库制作图形,并且我正在使用此设置
layout: {
name: 'cose',
idealEdgeLength: 100,
nodeOverlap: 20,
refresh: 20,
fit: true,
padding: 30,
randomize: false,
componentSpacing: 50,
nodeRepulsion: 400000,
edgeElasticity: 100,
nestingFactor: 5,
gravity: 300,
numIter: 1000,
initialTemp: 200,
coolingFactor: 0.95,
minTemp: 1.0
},
图形还可以,但边有时会相互截断,我需要多次刷新图形或重新排列图形以获得好看的图形。是否可以强制 Cytoscape 在渲染时不拦截边缘?
力导向布局是一种物理模拟,它设置每个元素的力来约束结果。相对边长通常具有与之相关的含义(例如权重),并且您通常希望看到自然聚类。考虑到这些事情避免边缘交叉通常会产生冲突。
Graphviz 和 Mathematica 具有平面布局,如果您愿意,可以将它们移植到 Cytoscape 布局扩展。但是,您将失去力导向布局的好处。
另请参阅:
- https://mathematica.stackexchange.com/questions/60230/planar-graph-layout
- Planar Graph Layouts
这个解决方案解决了我的问题"cose-bilkent"。
layout: {
name: 'cose-bilkent',
animate: false
},
它没有包含在正式版本中,应该包含额外的库https://cdn.rawgit.com/cytoscape/cytoscape.js-cose-bilkent/1.6.5/cytoscape-cose-bilkent.js
我正在使用 Cytoscape 库制作图形,并且我正在使用此设置
layout: {
name: 'cose',
idealEdgeLength: 100,
nodeOverlap: 20,
refresh: 20,
fit: true,
padding: 30,
randomize: false,
componentSpacing: 50,
nodeRepulsion: 400000,
edgeElasticity: 100,
nestingFactor: 5,
gravity: 300,
numIter: 1000,
initialTemp: 200,
coolingFactor: 0.95,
minTemp: 1.0
},
图形还可以,但边有时会相互截断,我需要多次刷新图形或重新排列图形以获得好看的图形。是否可以强制 Cytoscape 在渲染时不拦截边缘?
力导向布局是一种物理模拟,它设置每个元素的力来约束结果。相对边长通常具有与之相关的含义(例如权重),并且您通常希望看到自然聚类。考虑到这些事情避免边缘交叉通常会产生冲突。
Graphviz 和 Mathematica 具有平面布局,如果您愿意,可以将它们移植到 Cytoscape 布局扩展。但是,您将失去力导向布局的好处。
另请参阅:
- https://mathematica.stackexchange.com/questions/60230/planar-graph-layout
- Planar Graph Layouts
这个解决方案解决了我的问题"cose-bilkent"。
layout: {
name: 'cose-bilkent',
animate: false
},
它没有包含在正式版本中,应该包含额外的库https://cdn.rawgit.com/cytoscape/cytoscape.js-cose-bilkent/1.6.5/cytoscape-cose-bilkent.js