【问题标题】:adding edge breaks graphviz dot layout添加边缘中断graphviz点布局
【发布时间】:2020-09-06 23:28:31
【问题描述】:

我正在尝试在 graphviz dot 中制作一个垂直方向的流程图。我是这种格式的新手,所以请放轻松。我的布局 99% 正确,但是当我添加最后一条边 (data -> h) 时,它会中断。我注意到如果我添加最后的边缘,但删除“是”标签,格式也是正确的。我将其归结为一个仍然显示不良行为的简单示例。

我的问题: 如何保持我想要的垂直格式,并保持data -> h 边缘,并保持“是”标签。

理想,但缺少最终优势:

破碎,最后有data -> h 边缘:

理想,带有最终的data -> 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

}

【问题讨论】:

    标签: graphviz dot


    【解决方案1】:

    争吵有时是一个偶然的命题。改变你的边缘以终止于 h:ne(h 的东北角),如下所示:

    data -> h:ne
    

    你会得到:

    【讨论】:

    • 太棒了!这对我有用。除了应用随机权重或终止方向之外,还有其他方法吗?
    • 任何行列左右两侧的不可见节点也可能起到作用。边缘放置非常不透明,但在这种情况下,您可能(?)与整体图形宽度/大小和右/左边缘对称性(我的猜测)的规则作斗争。路由边缘到/从端口是我的“去”。
    • 有没有办法增加图形宽度
    猜你喜欢
    • 2012-07-02
    • 2012-10-05
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2010-12-03
    • 2018-08-09
    相关资源
    最近更新 更多