我试图在Graphviz中将多个节点簇均匀地分配到空间。
我认为这张照片最能解释我想要做的事情:
从图像中可以看出,在第2层和第3层之间有额外的间距,2和3之间的空间应该与1和2之间的空间相同。
该间距还需要与3层以上的规模。当我尝试超过3层时,第4层的间距和第3层一样差。
这是我的图表文件:
digraph G {
nodesep=1.25;
splines=false;
node[width=1, shape=circle];
edge[style=invis];
subgraph cluster_1 {
label="Layer 1";
"1-1" -> "1-2" -> "1-3";
}
subgraph cluster_2 {
label="Layer 2";
"2-1" -> "2-2" -> "2-3";
}
subgraph cluster_3 {
label="Layer 3";
"3-1" -> "3-2" -> "3-3";
}
edge[style=solid, penwidth=1, constraint=false];
"1-1" -> "2-1";
"1-3" -> "2-1";
"1-1" -> "2-2";
"1-2" -> "2-2";
"1-2" -> "2-3";
"1-3" -> "2-3";
"2-1" -> "3-1";
"2-3" -> "3-1";
"2-1" -> "3-2";
"2-2" -> "3-2";
"2-2" -> "3-3";
"2-3" -> "3-3";
}
我怎样才能使我的间隔对称呢?任何帮助都将不胜感激。谢谢。
更新:我已经设法使间隔均匀,但这不是一个完美的解决方案。
通过在图形上方放置一个不可见边缘的不可见节点,并将其连接到每一层中的顶部节点,各层空间均匀。但是,这个节点会使需要在图像上方添加的东西的间距变得混乱。那么,有什么更好的方法吗?
发布于 2015-05-15 03:20:07
添加外部集群
为清晰起见而显示的外簇包围盒
在另一个集群中嵌套集群cluster_1
、cluster_2
和cluster_3
会使布局引擎均匀地对它们进行空间划分。
使用布局引擎
然而,自下而上的rankdir
将从左到右的显示顺序反转到(cluster_3, cluster_2, cluster_1)
。倒转源文件中的顺序,就会对此进行修正。
工作守则
digraph G {
nodesep=1.25;
splines=false;
clusterrank=local;
node[width=1, shape=circle];
edge[style=invis];
subgraph cluster_0 {
subgraph cluster_3 {
label="Layer 3";
"3-1" -> "3-2" -> "3-3";
}
subgraph cluster_2 {
label="Layer 2";
"2-1" -> "2-2" -> "2-3";
}
subgraph cluster_1 {
label="Layer 1";
"1-1" -> "1-2" -> "1-3";
}
}
edge[style=solid, penwidth=1, constraint=false];
"1-1" -> "2-1";
"1-3" -> "2-1";
"1-1" -> "2-2";
"1-2" -> "2-2";
"1-2" -> "2-3";
"1-3" -> "2-3";
"2-1" -> {"3-1" "3-2"};
"2-3" -> {"3-1" "3-3"};
"2-2" -> {"3-2" "3-3"};
}
备注
可以对新的外部集群进行样式设置,使其边框不可见。
https://stackoverflow.com/questions/30063518
复制相似问题