GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph

it2025-05-23  37

目录

node布局说明默认布局有指向关系时的布局几个节点做为同一序列元素指定多组同序列使用subgraph使多个node节点做为一个整体subgraph子图中的节点默认还是占用一行当subgraph有指向关系时,它依然占用画板行在subgraph中,可以使用rank约束节点占用行subgraph可以使用绝大部分全局属性,用以生成样式背景等不同视觉的子图

node布局说明

在rankdir=TB默认值时,可以把画布看做是一个横格作文本 在rankdir=LR时,可以把画布看到横过来的作文本,即线条是竖着的 在节点没有关系指向时,它们都在第一行 当节点有指向关系时,子节点会在父节点的下一行(可以通过rank更改) 使用rank可以使指定的节点都提至rank序列中的最高行(如,x:2,y:5,z:20, 那么y和z都会被提至第2行的高度)

默认布局

digraph g{ A;B;C;D;E;F;H; }

有指向关系时的布局

digraph g{ A;B;C;D;E;F;H; A->B; B->C; C->D; D->E; D->F; E->H; }

几个节点做为同一序列元素

digraph g{ // rankdir="LR" A;B;C;D;E;F;H; {rank="same"; C;D;E} A->B; B->C; C->D; D->E; D->F; E->H; }

指定多组同序列

digraph g{ A;B;C;D;E;F;H; {rank="same"; B;E} {rank="same"; F;E} A->B; B->C; C->D; D->E; D->F; E->H; }

使用subgraph使多个node节点做为一个整体

在rankdir=TB时,subgraph节点默认是横向排列,它们占用同一行 在rankdir=LR时,默认它们占用同一列

subgraph子图中的节点默认还是占用一行

digraph g{ A;H; subgraph cluster_a { style = "dashed"; B;C;D; } subgraph cluster_b { style = "dashed"; E;F; } A->B; B->E; B->H; }

当subgraph有指向关系时,它依然占用画板行

digraph g{ A;H; subgraph cluster_a { style = "dashed"; B;C;D; Z; B->D->C; } subgraph cluster_b { style = "dashed"; E;F; } A->B; B->E; B->H; }

在subgraph中,可以使用rank约束节点占用行

digraph g{ A;H; subgraph cluster_a { style = "dashed"; {rank="same"; B;C;D} B;C;D; B->C->D; } subgraph cluster_b { style = "dashed"; E;F; } A->B; B->E; B->H; }

subgraph可以使用绝大部分全局属性,用以生成样式背景等不同视觉的子图

最新回复(0)