Javascript 通过cytoscape.js中的cy.add()添加多条边后使用mapData()
我正在使用cytoscape.js将原始txt数据转换为cytoscape.js图形。 为此,我首先用以下公式绘制图表:Javascript 通过cytoscape.js中的cy.add()添加多条边后使用mapData(),javascript,html,css,web,cytoscape.js,Javascript,Html,Css,Web,Cytoscape.js,我正在使用cytoscape.js将原始txt数据转换为cytoscape.js图形。 为此,我首先用以下公式绘制图表: var cy=cytoscape({…}) 没有任何元素。然后从txt文件中读取节点和边后,我为节点添加了以下内容: cy.add({ data: {id: keys[i]} } ); 对于边,这是: cy.add({ data: { id: 'edge'
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
}
});
然后我想应用“宽度”:“mapData(weight,01100,1,6)”
。我该怎么做?
我试过这些:
1) 在边选择器中使用mapData()生成cy变量。(它不适用于添加的边和节点)
2) 制作每条边后,对每条边使用mapData():
cy.$('#edge'+i).style('width','mapData(weight,01100,1,6)')代码>
3) 生成所有节点和边后使用mapData():
cy.elements('edge')。style('line-color','mapData(权重,1,6,蓝色,绿色)')代码>
它们都不管用 可能是这样的:
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实例,在那里我定义了节点/边/的样式 谢谢你的回答。你能发布完整的代码示例吗?谢谢你编辑你的答案。两个问题:1)应用布局后需要运行()和2)它只将节点的所有宽度和高度替换为1。它可以工作!!我是在增加绳子的重量!!这就是问题所在!很高兴我能帮助解决与OP+相同的问题,mapData字符串中不允许有空格,也就是说,对于我的情况,唯一有效的解决方案是“mapData(权重,01100,1,6)”