一.当需求需要根据节点的类型来显示不同的颜色时,我们就可以自定义节点的颜色,通过后台返回的数据判断不同类型的节点显示不同的颜色
// 以下是自定义节点颜色重点
// 根据后台返回的数据,flag 为 'b' 的节点显示 “#fff” 颜色,其他默认显示 fill: “#ea7171” 颜色
graph.node(node => {
if (node.flag === 'b') {
return {
style:{
fill: '#fff',
stroke: '#ea7171'
}
}
}
return {
style: {
fill: '#2db7f5',
stroke: '#ea7171'
}
}
});
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
二、完整代码
import G6 from '@antv/g6';
const data = {
nodes: [
{
id: '0',
label: '0',
flag: 'b',
},
{
id: '1',
label: '1',
flag: 'b',
},
{
id: '2',
label: '2',
flag: 'a',
},
{
id: '3',
label: '3',
flag: 'b',
},
{
id: '4',
label: '4',
flag: 'a',
}
],
edges: [
{
source: '0',
target: '1',
},
{
source: '0',
target: '2',
},
{
source: '0',
target: '3',
},
{
source: '0',
target: '4',
},
],
};
const width = document.getElementById('container').scrollWidth;
const height = document.getElementById('container').scrollHeight || 500;
const graph = new G6.Graph({
container: 'container',
width,
height,
modes: {
default: ['drag-canvas', 'drag-node'],
},
layout: {
type: 'fruchterman',
gravity: 5,
speed: 5,
},
animate: true,
defaultNode: {
size: 30,
style: {
lineWidth: 2,
stroke: '#5B8FF9',
fill: '#C6E5FF',
},
},
defaultEdge: {
size: 2,
color: '#e2e2e2',
style: {
endArrow: {
path: 'M 0,0 L 8,4 L 8,-4 Z',
fill: '#e2e2e2',
},
},
},
});
// 以下是重点
graph.node(node => {
if (node.flag === 'b') {
return {
style:{
fill: '#fff',
stroke: '#ea7171'
}
}
}
return