是否可以在CytoscapeJS中仅对图形的一个节点进行着色?

问题描述 投票:1回答:1

我可以选择一个特定的节点并用其余图形的颜色为其着色吗?

谢谢。

javascript cytoscape.js
1个回答
0
投票
如果选择(单击)节点时需要更改其颜色,则可以类似的方式使用cy.on('tap', ...)more info。]

这是两者的一个小演示:

var eleArray = [ { group: 'nodes', data: { id: 'N1'} }, { group: 'nodes', data: { id: 'N2'} }, { group: 'nodes', data: { id: 'N3'} }, { group: 'edges', data: { id: 'E0', source: 'N1', target: 'N2' } }, { group: 'edges', data: { id: 'E1', source: 'N2', target: 'N3' } } ]; var stylesArray = [{ selector: 'node', style: {'label': 'data(id)'} }]; var cy = cytoscape({ container: document.getElementById('cy'), style: stylesArray, elements: eleArray }); // Set color of a node by ID cy.nodes('[id="N2"]').style('background-color', 'red'); // Set color of a node when clicked cy.on('tap', 'node', function(evt) { var target = event.target; evt.target.style({ 'background-color': 'blue' }); });
#cy { width: 90%; height: 300px; display: block; }
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.14.1/cytoscape.min.js"></script>
<div id="cy"></div>
注意我如何将节点N2的颜色直接更改为红色,以及单击节点时颜色如何更改为蓝色。
如果图形非常复杂,也许更好的方法是将颜色添加为节点的属性,并在样式定义中使用该属性数据。像这样的东西:

// New 'color' property on your nodes var eleArray = [ { group: 'nodes', data: { id: 'N1', color: 'red'} } // ... ]; // Use the property on your styles var stylesArray = [{ selector: 'node', style: {'label': 'data(id)', 'background-color': 'data(color)'} }];

© www.soinside.com 2019 - 2024. All rights reserved.