web-dev-qa-db-ja.com

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

19
A. K.

lenはドットでは機能しませんが、次のトリックを試すことができます。

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

6
wener

Dot(1)から:

len=f sets the optimal length of an Edge.  The default is 1.0.
3
Igor Chubin

編集:申し訳ありませんが、残念ながら、以下はあなたの問題、私の間違いでは機能しませんが、自己参照ではないエッジが長くなります。

lenはドットでは機能しませんが、minlenは機能します。

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

x->y
[minlen=5]
2
compound eye

次のように、表示されているエッジの前に非表示のサイクリックエッジの束を追加することで、サイクリックエッジを長くすることができます。

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

1
Paul Breen

次の属性「anodesep」がsfdpでこの問題を解決するのに役立つことがわかりました。

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

0
slydon