我试图避免在20-> 40和30-> 70之间穿过线。有谁知道如何做到这一点?我使用单点来理顺边缘但我希望渲染引擎避免这些边缘重叠。这是我的点代码:
digraph {
graph [splines="ortho", nodesep = "1", overlap = false];
node [shape=rectangle, color=lightgrey, style=filled ];
10
20
30
40
50
60
70
80
90
node[shape=none, width=0, height=0 label=""];
edge[dir=none];
{rank=same;
p1->10
10->p2
}
p1->20
p2->30
{rank=same;
p3->40
40->p4
}
p3->50
p4->60
{rank=same;
p5->70
70->p6
}
p5->80
p6->90
20->40
30->70
}
我想发布一个图片,但stackoverflow不允许我这样做...你可以看到我将你的代码复制到我的意思:http://stamm-wilbrandt.de/GraphvizFiddle/
我真的很感谢你对此的帮助!
答案 0 :(得分:1)
你可以通过在p4和dp5之间添加一条不可见边来给graphviz一个提示:
{
rank=same;
p3 -> 40;
40 -> p4;
p4 -> p5 [style=invis]; // new invisible edge
p5 -> 70;
70 -> p6;
}
如果您无法添加不可见边(动态图生成),请确保属于子图的节点确实首先出现在子图中,因此避免使用前期节点定义。
在这个例子中,我删除了脚本开头的节点定义,并内联了肘关节节点的样式。
digraph {
graph [splines="ortho", nodesep = "1", overlap = false];
node [shape=rectangle, color=lightgrey, style=filled ];
//node[shape=none, width=0, height=0, label=""];
edge[dir=none];
{
rank=same;
p1[shape=none, width=0, height=0, label=""];
p2[shape=none, width=0, height=0, label=""];
p1->10
10->p2
}
p1->20
p2->30
{
rank=same;
p3[shape=none, width=0, height=0, label=""];
p4[shape=none, width=0, height=0, label=""];
p3->40
40->p4
}
p3->50
p4->60
{
rank=same;
p5[shape=none, width=0, height=0, label=""];
p6[shape=none, width=0, height=0, label=""];
p5->70
70->p6
}
p5->80
p6->90
20->40
30->70
}