我想控制以下示例中某些元素的位置:
digraph {
graph [splines=ortho];
/* Node customization. */
node [shape=box];
join [shape=point];
set [label="set\npoint"];
/* Define node levels; driving elements on top, feed back below. */
{ rank = min; set; PID; P1; P2; join; OUT;}
{ rank = max; M1;}
/* Edges */
set -> PID -> P1 -> P2;
P2-> join [arrowhead=none];
join -> {OUT; M1};
PID -> M1 [dir=back];
}
也许有些问题是无关紧要的,因为正确定位一个问题会使其他问题自然发生。
通常,您可以使用headport属性控制箭头进入节点的点。但是对于ortho
样条曲线,这很少起作用。正交样条线过着自己的生活,并可能引起各种不同的问题,包括边缘标签消失。因此,您的第一个问题没有确定的答案,每种情况都必须专门处理。
您可以通过设置nodesep图形属性来增加all节点之间的距离。但是,如果只需要增加特定节点之间的距离,可以使用一个技巧:添加一个带有大量空格的标签作为值。
您可以用不可见的边缘来完成它。
下面编辑示例中说明的第2点和第3点:
digraph {
graph [splines=ortho];
/* Node customization. */
node [shape=box];
join [shape=point];
set [label="set\npoint"];
/* Define node levels; driving elements on top, feed back below. */
{ rank = min; set; PID; P1; P2; join; OUT;}
{ rank = max; M1;}
/* Edges */
set -> PID;
P2-> join [arrowhead=none];
join -> {OUT; M1}
PID -> M1 [dir=back];
PID -> P1 -> P2 [label=" "] /* #2 increase space between specific nodes */
P1 -> M1 [style=invis] /* #3 align P1 an M1 */
}
结果: