如何在Cytoscape.js中使边缘不被拦截?

时间:2018-01-15 22:51:07

标签: javascript graph cytoscape.js

我正在使用Cytoscape库制作图表,我正在使用此设置

public static class MessageListener implements ConsumerSeekAware{
    ConsumerSeekCallback callback;

    @Override
    public void registerSeekCallback(ConsumerSeekCallback callback){
      this.callback = callback;
    }

    @Override
    public void onPartitionsAssigned(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback) {

    }

    @Override
    void onIdleContainer(Map<TopicPartition, Long> assignments, ConsumerSeekCallback callback) {

    }
}

图表没问题,但边缘有时会相互拦截,我需要多次刷新图形或重新排列以获得漂亮的图形。是否可以强制Cytoscape在渲染时不截取边缘?

2 个答案:

答案 0 :(得分:1)

力导向布局是一种物理模拟,用于设置每个元素的力以约束结果。相对边长度通常具有与它们相关的含义(例如权重),并且您经常希望看到自然聚类。考虑到这些事情,避免边缘交叉通常会产生冲突。

Graphviz和Mathematica具有平面布局,如果您愿意,可以将它们移植到Cytoscape布局扩展中。但是,你将失去强制导向布局的好处。

另见:

答案 1 :(得分:1)

这个解决方案解决了我的问题&#34; cose-bilkent&#34;。

  layout: {
    name: 'cose-bilkent',
        animate: false
  },

它未包含在官方发行版中,应包含其他库https://cdn.rawgit.com/cytoscape/cytoscape.js-cose-bilkent/1.6.5/cytoscape-cose-bilkent.js

演示在这里http://js.cytoscape.org/demos/6c9907e7896f8ae23f9f/