我需要使用Cytoscape.js绘制相对较小(最多20个节点)的网络图。大多数情况下,图表看起来不错,但有时会出现问题。有时节点的位置太近或存在其他问题。下面举几个例子:
通常,某些边缘也会重叠,即使对节点进行布局并不难,从而不会发生重叠。
我一直在试验参数,但是由于变量太多,因此很难找到最佳组合。
我正在使用ATM的参数:
cy.layout({
name: "cose-bilkent",
animate: false,
idealEdgeLength: 30,
quality: "proof",
randomize: false,
nodeDimensionsIncludeLabels: true,
nodeRepulsion: 7000,
edgeElasticity: 0.45,
nestingFactor: 0.1,
numIter: 30000,
gravity: 0.25,
tile: true
}).run();
我应该调整什么?
编辑:
Stephan的几个示例图像(请参阅注释):
同位元音和fcose都没有防止边缘重叠的机制。实际上,在力导向布局算法中很难实现。另一方面,这两种算法试图尽可能地防止节点重叠,但是这种情况很少发生,尤其是在图形密集的情况下。
减少重叠机会的一种方法是在两种算法中都增加IdealEdgeLength参数,这将使节点不再分离。但我建议您使用fcose算法,如果您的图是平面的(或接近平面的),因为fcose通常在提供平面图的平面嵌入方面做得更好。