javascript - 如何配置图形以在不对节点位置进行硬编码的情况下显示向下指向的边缘?

标签 javascript cytoscape.js cytoscape webcola

我正在尝试使用 cytoscape.js 和 cytoscope-cola.js 来实现这种效果扩展名。

我想让我的图表的边缘像这张照片一样直接向下:

downward directed graph edges

而不是默认显示的无约束图。我正在使用可乐布局,因为我希望能够输入自定义边缘权重。

I've built a codepen to demonstrate what I'm seeing ;但这是我构建图表的方式:

var cy = window.cy = cytoscape({
  container: document.getElementById('cy'),
  layout: {
    name: 'cola',
    edgeLength: function( edge ){
      return edge._private.data.edge_weight;
    },
    flow: { axis: 'y', minSeparation: 50 },
    avoidOverlap: true,
    alignment: function( node ){
    },
    ready: function(){
      console.log('rendered graph')
      window.prev = undefined
    }
  },
  style: [
    {
      selector: 'node',
      css: {
        'content': 'data(name)'
      }
    },
    {
      selector: 'edge',
      css: {
        'target-arrow-shape': 'triangle'
      }
    }
  ],
  elements: {
    nodes: [
      { data: { id: 'j', name: 'J' } },
      { data: { id: 'e', name: 'E' } },
      { data: { id: 'k', name: 'K' } },
      { data: { id: 'l', name: 'L' } },
      { data: { id: 'g', name: 'G' } }
    ],
    edges: [
      { data: { source: 'j', edge_weight:80, target: 'e' } },
      { data: { source: 'j', edge_weight:80, target: 'l' } },
      { data: { source: 'e', edge_weight: 200, target: 'k' } },
      { data: { source: 'k', target: 'g' } }
    ]
  },
});
cy.minZoom(0.75);

任何关于我如何约束图表使其表现得像上图一样的输入或方向都很棒 :)

最佳答案

看起来它在您的演示中有效。

一般来说,您不能指望物理模拟布局能为您提供完美的树状结果您发布的示例图片是一个往往效果很好的特定图表。

如果您正在寻找合适的树布局,您应该查看 dagre:https://github.com/cytoscape/cytoscape.js-dagre

关于javascript - 如何配置图形以在不对节点位置进行硬编码的情况下显示向下指向的边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845858/

相关文章:

javascript - 为散点图中的每个点绘制词云

qtip - 右键单击Cytoscape js qtip

animation - Cytoscape.js:带动画的 cose 布局

javascript - 在 Cytoscape.js 中为家谱设置边缘样式

javascript - 如何筛选Cytoscape Web的报价

python - 是否可以获得 Dash-Cytoscape 图形工具提示?

python - 使用 Dash Cytoscape 在回调中更改节点的标签

javascript - AngularJS 中同一个 URL 的两种状态

javascript - Firefox 3.6.x 没有触发我的 onload 事件

javascript - 从选择类型中选择时如何刷新div而不是所有页面