GraphViz DOT有向图 (四)node节点布局控制之rank,group,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可以使用绝大部分全局属性,用以生成样式背景等不同视觉的子图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值