添加边打断graphviz点布局

添加边打断graphviz点布局,graphviz,dot,Graphviz,Dot,我想用graphviz圆点做一个垂直方向的流程图。我不熟悉这种格式,所以请放轻松。我的布局99%正确,但当我添加最终边缘(data->h)时,它会断裂。我注意到,如果我添加了最终边缘,但删除了“是”标签,则格式也正确。我已经把它归结为一个简单的例子,仍然显示了不受欢迎的行为 我的问题: 如何保持所需的垂直格式,保持数据->h边缘,并保持“是”标签 理想,但缺少最终边缘: 断裂,带有最终的数据->h边缘: 理想情况下,最终数据->h边缘,但删除“是”标签: 争论的边缘有时是一个命中或未命中的

我想用graphviz圆点做一个垂直方向的流程图。我不熟悉这种格式,所以请放轻松。我的布局99%正确,但当我添加最终边缘(
data->h
)时,它会断裂。我注意到,如果我添加了最终边缘,但删除了“是”标签,则格式也正确。我已经把它归结为一个简单的例子,仍然显示了不受欢迎的行为

我的问题: 如何保持所需的垂直格式,保持
数据->h
边缘,并保持“是”标签

理想,但缺少最终边缘:

断裂,带有最终的
数据->h
边缘:

理想情况下,最终
数据->h
边缘,但删除“是”标签:


争论的边缘有时是一个命中或未命中的命题。将边更改为终止于h:ne(h的东北角),如下所示:

你会得到:

太好了!这对我有用。除了应用随机权重或终止方向之外,还有其他方法吗?任何列组左右两侧的不可见节点也可能会起作用。边的放置是非常不透明的,但在这种情况下,您可能(?)在与关于整个图形宽度/大小和右/左边对称性的规则进行斗争(我猜)。将边路由到端口或从端口路由到端口是我的“目标”。有没有增加图形宽度的方法
digraph G {

a [
label = "a";
shape = diamond;
];

b [
label = "b";
shape = rect;
];

makedata [
label = "makedata";
shape = rect;
];

data [
label = "data";
shape = box3d;
]

filldata [
label = "filldata";
shape = rect;
]

num [
label = "num"
shape = box3d;
]

num2 [
label = "num2"
shape = box3d;
]

prepdata [
label="prepdata"
shape=rect;
]

prepdata2 [
label="prepdata2"
shape=rect;
]

lorem [
label="lorem_ipsum_dolor_sit"
shape="rect"
]

lorem2 [
label="lorem_ipsum_dolor_sit"
shape="rect"
]

h [
label="h"
shape="rect"
]

{
rank=same;
filldata;data
}

{
rank=same;
num2;prepdata2
}

// if data -> h is included, and this label is removed, formatting is also correct
a:s -> b [label="Yes"]
b -> makedata
makedata:e -> data:w
makedata -> filldata [weight=99]
filldata:e -> data:w
filldata->prepdata  [weight=99]
data -> prepdata
data -> prepdata2
data -> lorem:ne
prepdata -> lorem:n  [weight=99]
lorem -> prepdata2  [weight=99]
num:e->prepdata:w 
num2:e->prepdata2:w [weight=99]
prepdata2:s -> lorem2:n [weight=99]
data -> lorem2
lorem2 -> h  [weight=99]
// data -> h  # the problem

}
data -> h:ne