Cytoscape.js和cose-bilkent:防止节点和边缘重叠的最佳参数

时间:2020-04-02 12:08:16

标签: cytoscape.js

我需要使用Cytoscape.js绘制相对较小(最多20个节点)的网络图。大多数情况下,图表看起来不错,但有时会出现问题。有时节点的位置太近或存在其他问题。下面是几个示例:

example 1

example 2

即使不难对节点进行布局以使不会发生重叠,通常某些边缘也会重叠。

我一直在试验参数,但是由于变量太多,因此很难找到最佳组合。

我正在使用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)的几个示例图像(请参阅注释):

demo 1 demo 2

1 个答案:

答案 0 :(得分:3)

同理语言和fcose都没有防止边缘重叠的机制。实际上,在力导向布局算法中很难实现。另一方面,这两种算法试图尽可能地防止节点重叠,但是这种情况很少发生,尤其是在图形密集的情况下。

减少重叠机会的一种方法是增加两种算法中的idealEdgeLength参数,这将使节点更加分离。如果没有理由防止从头开始应用布局,也请使用randomize: true。但是我建议您在图形为平面(或接近平面)的情况下使用fcose算法,因为fcose通常在提供平面图的平面嵌入方面做得更好。

相关问题