1

ウィキメディアコモンズのような、垂直に並べられたリンクリストを描きたいと思います。

クレジット:ウィキメディアコモンズ

これまでの私のベストショットは次のとおりです。

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

これは次のようになります。

ここに画像の説明を入力してください

アローテールドットをレコード内から発信するように設定し、レコードをノードdとして表示するように設定するにはどうすればよいですか?X

tailclip=false運が悪かったので試してみました。

4

1 に答える 1

2

エッジのテールエンドのコンパスポイントを設定tailclip=false して指定する必要があります。

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

graphviz出力

残念ながら、最後のノードに必要な形状は、使用可能なデフォルトの形状には含まれていません。ポストスクリプトまたはビットマップイメージを使用してカスタムシェイプを追加できます。SVG出力を使用している場合はSVGを追加することもできます。

于 2013-03-19T12:17:48.303 に答える