digraph(有向图) 是Graph库中的一种图形类型。它由一组节点和一组有向边组成。digraph 中每条边都是有方向的,即只能从一个节点开始,指向另一个节点。digraph 常用于描述数据之间的有向关系,比如网站的链接关系等。
创建一个新的有向图。返回一个新的digraph对象。
添加一个新节点到digraph中。name参数是节点的名称,attrs是节点的属性对象。属性对象是可选的,可以用来设置节点的样式、文本等属性。
在digraph 中添加从from节点指向to节点的一条有向边。from 和 to 参数分别是有向边的起点和终点。attrs 是可选的,可用于设置边的样式、文本、权重等属性。
获取指定名称的节点的属性对象。attrs 是可选的,如果指定了attrs,则更新节点的属性。
获取从 from 节点到 to 节点的有向边的属性对象。attrs 是可选的,如果指定了attrs,则更新边的属性。
删除digraph中指定名称的节点,以及该节点相关的所有有向边。
删除digraph中从 from 节点到 to 节点的有向边。
获取digraph 中所有节点的名称列表。
获取digraph 中所有有向边的列表,每个元素由起点、终点和属性组成。
获取指定节点汇出的所有有向边的列表,每个元素由终点和属性组成。
获取指定节点源入的所有有向边的列表,每个元素由起点和属性组成。
获取指定节点的所有后继节点的名称列表。
获取指定节点的所有前驱节点的名称列表。
// 创建一个新的有向图
var graph = yuka.Graph.digraph();
// 添加节点
graph.addNode('a', { style: 'filled', fillcolor: 'red', label: 'A'});
graph.addNode('b', { style: 'filled', fillcolor: 'green', label: 'B'});
graph.addNode('c', { style: 'filled', fillcolor: 'blue', label: 'C'});
graph.addNode('d');
// 添加有向边
graph.addEdge('a', 'b', { label: '1', weight: 10 });
graph.addEdge('b', 'c', { label: '2', weight: 20 });
graph.addEdge('c', 'a', { label: '3', weight: 30 });
graph.addEdge('d', 'a');
// 获取节点和边
console.log(graph.nodes()); // ['a', 'b', 'c', 'd']
console.log(graph.edges()); // [['a', 'b', { label: '1', weight: 10 }], ['b', 'c', {label: '2', weight: 20 }], ['c', 'a', { label: '3', weight: 30 }], ['d', 'a']]
// 删除节点和边
graph.removeNode('a');
console.log(graph.nodes()); // ['b', 'c', 'd']
console.log(graph.edges()); // [['b', 'c', {label: '2', weight: 20 }]]
// 更新节点和边
graph.node('b', { label: 'BB'});
graph.node('c').style = 'dotted';
graph.edge('b', 'c', { label: '22', weight: 200 });
// 获取节点的相关信息
console.log(graph.successors('b')); // ['c']
console.log(graph.outEdges('b')); // [['b', 'c', { label: '22', weight: 200 }]]
console.log(graph.predecessors('c')); // ['b']
console.log(graph.inEdges('c')); // [['b', 'c', { label: '22', weight: 200 }]]