【发布时间】:2017-11-15 23:47:53
【问题描述】:
我对 Graphviz 很陌生,如果我的问题太天真,请见谅。
在 dot 中,我试图有几个图形图像,节点位于固定位置,但弧线不同。然而,即使是对弧形配置的微小修改,也会在布局上产生巨大的差异。我找到了一些解决方法(通过保持某些对冲不可见,或使用“后退”选项)。但是,我想知道是否有更优雅的方法来避免这种情况,即仅修改一个弧线方向会产生完全不同的布局。
例如,看这个:
digraph exempleUPFM {
label=mylab;
ratio = 0.5;
spline = line; forcelabels=true;
node [shape = circle;style=filled; color=lightgrey;];
1 [xlabel="10" fontcolor= blue group=g1];
4 [xlabel="-6" fontcolor= red group=g1];
2 [xlabel="4" fontcolor= blue group=g2];
5 [xlabel="-8" fontcolor= red group=g2];
node [shape = circle; style=""]
{rank=same; 1 2}
{rank=same; 4 5}
1 -> 2 [label=" 1"]
1 -> 3 [label=" 8"]
1 -> 4 [label=" 1"]
2 -> 3 [label=" 2"]
3 -> 4 [label=" 1"]
3 -> 5 [label=" 4"]
4 -> 5 [label=" 12"]
5 -> 2 [label=" -7"]
}
或者这个
digraph exemple2UPFM {
label=mylab;
ratio = 0.5;
spline = line; forcelabels=true;
node [shape = circle;style=filled; color=lightgrey;];
1 [xlabel="10" fontcolor= blue group=g1];
4 [xlabel="-6" fontcolor= red group=g1];
2 [xlabel="4" fontcolor= blue group=g2];
5 [xlabel="-8" fontcolor= red group=g2];
node [shape = circle; style=""];
{rank=same; 1 2}
{rank=same; 4 5}
1 -> 2 [label=" 1"]
1 -> 3 [label=" 8"]
1 -> 4 [label=" 1"]
2 -> 3 [label=" 2"]
3 -> 4 [label=" 1"]
3 -> 5 [label=" 4"]
5 -> 4 [label="-12"]
5 -> 2 [label=" -7"]
}
在这种特定情况下,唯一的区别是 5 和 4 之间的圆弧方向。但是图形布局的差异是残酷的。在第二个示例中,如果我保留弧 4 -> 5 并添加“后退”选项,则布局将恢复为原始布局。
您有什么线索吗?是否有办法避免节点的位置在任何最小弧修改时发生变化?
非常感谢您的帮助。
【问题讨论】: