Graphviz dot中方框图节点的更好布局

Graphviz dot中方框图节点的更好布局,graphviz,dot,graph-layout,Graphviz,Dot,Graph Layout,在上一个问题()之后,我还有更多的问题。下面是这样编译的: dot-Gsplines=none test.gv | neato-n-Gsplines=ortho-Tpng-otest.png 我的问题是如何将Baz和Darjeeling节点移到左侧以降低中间节点的高度。我不知道是什么决定了这一点。我知道这是一个方向图,所以这个图的一般“流程”是从左到右的,我只是想要更多的控制 这些图表将自动生成,因此,与使其适用于此特定示例的代码片段相比,最好解释如何按照我的意愿进行布局以及为什么这样做 谢谢

在上一个问题()之后,我还有更多的问题。下面是这样编译的:

dot-Gsplines=none test.gv | neato-n-Gsplines=ortho-Tpng-otest.png

我的问题是如何将Baz和Darjeeling节点移到左侧以降低中间节点的高度。我不知道是什么决定了这一点。我知道这是一个方向图,所以这个图的一般“流程”是从左到右的,我只是想要更多的控制

这些图表将自动生成,因此,与使其适用于此特定示例的代码片段相比,最好解释如何按照我的意愿进行布局以及为什么这样做

谢谢

有两点:

我如何将Baz和Darjeeling节点移动到左侧

通过为从示例到Baz和Darjeeling的边设置
constraint=false
,或者将所有节点分组,使其在子图中显示在示例左侧,并使用
rank=min

您可能会说这不是一个合适的解决方案(至少不是带有
constraint=false
的解决方案),因为

这些图表将自动生成

我完全理解(去过很多次)-但同时,你希望

减小中间节点的高度的步骤

这是手动设置的,因此图形仍然不是完全自动生成的(例如,如何计算所需的高度?)

我不知道是什么决定了这一切

我不完全确定这两个位置——巴兹也可能在左边

令人惊讶的是,节点的外观顺序在某些情况下会改变布局。例如,如果向上移动Darjeeling节点的定义,它将显示在左侧(而Bar将显示在右侧)


编辑:下面是代码片段

第三种可能是按照正确的顺序(自上而下/左右)定义所有边,并使用
dir=back
装饰返回的边

如果你改变这三行

example -> bar [label="blu"];
example -> baz [label="ble"];
example -> darjeeling [label="bla"];
进入

或进入

(并更改
示例的高度

你会得到


谢谢你的回答。子图可以工作。我也可以把一些约束=错误的东西放进去,只需要玩一些。现在,高度是根据到它的边数计算的;但这很容易改变。我知道改变顺序,但没有使双方更加平衡。将播放子图和报告,谢谢!对不起,我迟了答复。这看起来很有希望,所以这是公认的答案!
example -> bar [label="blu"];
example -> baz [label="ble"];
example -> darjeeling [label="bla"];
bar -> example [label="blu", dir=back];
baz -> example [label="ble", dir=back];
darjeeling -> example [label="bla", dir=back];
example -> bar [label="blu", constraint=false];
example -> baz [label="ble", constraint=false];
example -> darjeeling [label="bla", constraint=false];