2

次のgraphvizグラフを作成しました。これは、サイクルでリンクされたリストを表しています。

igraph foo {
    rankdir=LR;
    node [shape=record];
    a [label="{ <data> 12 | <ref>  }", width=1.2]
    b [label="{ <data> 99 | <ref>  }"];
    c [label="{ <data> 37 | <ref>  }"];
    a:ref:c -> b:data [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=1.2];
    b:ref:c -> c:data [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false];
    c:ref:c -> b:data [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false];
}

残念ながら、 からc:refへの矢印b:dataはノードを横切っていますc:

ここに画像の説明を入力

ノードを交差させずにエッジを強制的にノードを迂回させるにはどうすればよいですか?

4

2 に答える 2

3

シンプルで完全に満足のいく答えは見つかりませんが、コンパス ポイントを変更すると役立つ場合があります。

digraph foo {
    rankdir=LR;
    node [shape=record];
    a [label="{ <data> 12 | <ref>  }", width=1.2]
    b [label="{ <data> 99 | <ref>  }"];
    c [label="{ <data> 37 | <ref>  }"];
    a:ref:c -> b:data [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false, arrowsize=1.2];
    b:ref:c -> c:data [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false];
    c:ref:s -> b:data:s [arrowhead=vee, arrowtail=dot, dir=both, tailclip=false];
}

コンパスポイントを変更しました

于 2015-10-02T14:29:07.793 に答える
1

ドットファイルに対して実行"dot -Tsvg"し、その後、たとえばsvgファイルを開いて、そのようなことを行うことができますms visioここに画像の説明を入力

于 2013-03-24T09:41:00.540 に答える