4

次のコードを使用して、ラベルなしで見栄えがよく対称的に見える単純な垂直グラフがあります。

digraph test_alignment
{
    {rank=same; a -> b;}
    a -> c;
    b -> c;
    c -> d;
    d -> e;
    d -> f;
    {rank=same; e -> f;}
}

初期グラフ

各ラベルに同じ文字列を使用して、A と B の間のエッジと E と F の間のエッジにラベルを付けたいと思います。同じラベルが付いた長い A->B および E->F エッジを除いて、同じ出力を期待しています。

残念ながら、これらのエッジの 1 つにラベルを追加するとすぐに、全体的なレイアウトがわずかに斜めに見えます (E->F エッジにラベルを追加すると、結果は同様になります)。

digraph test_alignment
{
    {rank=same; a -> b [label="Label"];}
    a -> c;
    b -> c;
    c -> d;
    d -> e;
    d -> f;
    {rank=same; e -> f;}
}

ラベルが 1 つの同じグラフ

私はgraphvizを初めて使用し、スタックオーバーフローに関する多くの質問に従って、ランクと制約のさまざまな組み合わせを試してきました。クラスターを使用して、上部と下部を個別に適切に整列させるかどうかを確認し、使用してみましたdot、ccomp、gvpack、neato の組み合わせでも同様の結果が得られました。

同じランクのノード間のエッジにラベルを追加すると、これらのノードがどのように配置されるかに影響を与えるという事実に要約されるようです。

些細なことを見逃していますか、それともドットに任せるのではなく、すべきではないことを試みていますか?

私は dot - graphviz バージョン 2.36.0 (20140111.2315) を使用しており、リンクされた画像はドットのみで作成されました (ただし、次を使用すると同様の結果が得られました:

dot test_alignment.dot -Tpng -O
4

1 に答える 1

5

必要に応じて、xlabel属性を一緒に使用してみてください。forcelabels説明から:

... エッジの場合、ラベルはエッジの中央付近に配置されます。これは、エッジ ラベルの使用によってレイアウトが歪む場合に時々発生する問題を回避するためにドットで役立ちます。...

于 2014-07-25T13:12:24.413 に答える