如何使用Cytoscape将节点添加到Dagre布局

时间:2015-08-05 09:59:59

标签: cytoscape.js

我正在尝试通过cityscape.js将节点添加到dagre图表中。问题是节点没有绘制。 这是我目前的代码:

cy.add({
      group: "nodes",
      data: { id:"n0",name:"n0",weight: 75 },
  });
  $.ajax(url).done(function(jsonTree){
      var newNodes=[];
      for(var i=1;i<6;i++){
        //var child = jsonTree.result[i];
        newNodes.push(
          { group: "nodes", data: { id: "n"+i, name:"n"+i}},
          { group: "edges", data: { id: "e"+i, source: "n0", target: "n"+i } }
        );

      }
      cy.add(newNodes);

有什么想法吗?我已经使用加载函数来重新加载图形,但它不起作用。我不知道是否必须使用特定功能来重新加载图形。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

您需要为新节点添加位置。来自cytoscape.js docs

  

重要的是要注意新添加的节点的位置必须   在调用cy.add()时定义。节点不能放在图表中   没有有效位置 - 否则无法显示。

你想要for循环这样的东西:

  var newNodes=[];
  for(var i=1;i<6;i++){
     newNodes.push(
          { group: "nodes", 
              data: { 
                id: "n"+i, 
                name:"n"+i
              },
           //this is the bit you missed: position
              position: {
               x:25*i,
               y:20*i
              }
           },
          { group: "edges", 
           data: { 
             id: "e"+i, 
             source: "testnode", 
             target: "n"+i 
           } 
          }
        );
      }
  cy.add(newNodes);

Here's a JSBin showing a graph with new nodes added dynamically