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

目录

  • 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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第1张图片

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

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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第2张图片
GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第3张图片

指定多组同序列

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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第4张图片

使用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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第5张图片

当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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第6张图片

在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;
}

GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph_第7张图片

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

你可能感兴趣的:(GraphViz,GraphViz,graph,dot,有向图)