繁体   English   中英

在cytoscape.js中通过cy.add()添加多个边后使用mapData()

[英]using mapData() after adding several edges by cy.add() in cytoscape.js

我正在使用cytoscape.js将原始txt数据转换为cytoscape.js图。 为此,首先我用: var cy = cytoscape({...})没有任何元素的图。然后从txt文件读取节点和边后,我将其与此添加到节点中:

        cy.add({
            data: {id: keys[i]}
        }
    );

这对于边缘:

        cy.add({
        data: {
            id: 'edge' + i,
            source: edges[i].source,
            target: edges[i].target,
            label: edges[i].weight
        }

    });

然后我想应用'width': 'mapData(weight, 0, 100, 1, 6)' 我怎样才能做到这一点? 我尝试了这些:1)在使cy变量时在边缘选择器中使用mapData()(不适用于添加的边缘和节点)

2)在制作完每个边缘后,对每个边缘使用mapData(): cy.$('#edge' + i).style('width','mapData(weight, 0, 100, 1, 6)');

3)在制作完所有节点和边后使用mapData(): cy.elements('edge').style('line-color','mapData(weight,1,6,blue,green)');

它们都不起作用!

也许是这样的:

var cy = window.cy = cytoscape({
    container: document.getElementById('cy'),
    style: [
      {
        selector: 'node',
        style: {
          'label': 'data(name)',
          'width': 'mapData(weight, 0, 100, 1, 6)',
          'height': 'mapData(weight, 0, 100, 1, 6)',
        }
      }
    ]
  });

cy.add([
  { group: "nodes", data: { id: "n0", name: "node0", weight: "x"} },
  { group: "nodes", data: { id: "n1", name: "node1", weight: "y"} },
  { group: "edges", data: { id: "e0", source: "n0", target: "n1" } }
]);

cy.ready(function ()  {            // Wait for nodes to be added
    cy.layout(                     // Call layout
        name: 'yourDecision'
    ).run();
});

我在初始化时定义cytoscape实例,并在其中定义node / edges / ...的样式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM