如何在graphviz中指定边的长度?

时间:2012-07-01 16:25:36

标签: graphviz

在有向图中,如果存在循环,则graphviz会使该边缘非常短。

是否有一个参数可以让我改变循环边缘的长度,这样就可以了 图表看起来有点统一。

digraph ER {
  rankdir="LR";
  //orientation=landscape;
    node [shape=ellipse, fontsize=30];
  {node [label="Original"] old;}
  {node [label="Final"] new;}
  {node [label="Intermediate"] ir;}

old -> ir [label="suggest", fontsize=30];
ir -> ir [label="validate", fontsize=30, len=f];
ir -> new [label = "finalize", fontsize=30];
}

enter image description here

6 个答案:

答案 0 :(得分:5)

len并不适用于dot,但你可以尝试这个技巧:

digraph G {
rankdir=LR
a->b[dir=both]
b->c[dir=both,label="        "]// Just use the space to increase the edge length
}

答案 1 :(得分:3)

从点(1):

len=f sets the optimal length of an edge.  The default is 1.0.

答案 2 :(得分:1)

可以通过在可见边缘之前添加一堆不可见的循环边缘来延长循环边缘,如下所示:

digraph ER {
  rankdir="LR";
  //orientation=landscape;
    node [shape=ellipse, fontsize=30];
  {node [label="Original"] old;}
  {node [label="Final"] new;}
  {node [label="Intermediate"] ir;}

old -> ir [label="suggest", fontsize=30];
ir -> ir [style="invis"]
ir -> ir [style="invis"]
ir -> ir [style="invis"]
ir -> ir [style="invis"]
ir -> ir [label="validate", fontsize=30, len=f];
ir -> new [label = "finalize", fontsize=30];
}

OP's corrected graph

答案 3 :(得分:1)

编辑:对不起,很遗憾,以下内容不能解决您的问题,这是我的错,但是它将使不是自引用的边变长。

len 不能在点中使用,但是 minlen 可以。

https://www.graphviz.org/doc/info/attrs.html#d:minlen

x->y
[minlen=5]

答案 4 :(得分:0)

我发现以下属性'anodesep'用sfdp解决了这个问题。

http://www.graphviz.org/content/attrs#anodesep

答案 5 :(得分:0)

在 .dot 语言中,边连接两个不同等级的音符。 边长等于(秩差)*ranksep

默认的ranksep(在图形属性中)为0.75英寸,因此相邻节点的边缘将为0.75英寸。

为了减少边长,你在图属性中将ranksep设置为一个较小的值