13

私はしばらくこれに苦労してきましたが、まっすぐな答えを見つけることができないようです. 私はgraphvizで複合サブグラフを扱っていますが、2つのサブグラフを互いに整列させるための設定の正しい組み合わせを見つけることができないようです。

同封されているのは、問題を示す簡単な例です...

digraph g {
  compound=true;

  subgraph cluster_top {
    graph [color=black, label="Top", rank=min];

    nodeA; nodeB; nodeC
    cluster_top_DUMMY [shape=point style=invis]
  }

  subgraph cluster_service {
    graph [color=black, label="Bottom", rank=min];
    node1; node2; node3; node4; node5; extra_long_node
    cluster_bottom_DUMMY [shape=point style=invis]
  }
  cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
}

これにより、Bottom サブグラフが Top サブグラフよりも大幅に広い出力が生成されます。

ここに画像の説明を入力

私が本当に欲しいのは、上と下の両方が常にまったく同じ幅であることを保証することです。さらに、ノードが多すぎて使用可能な幅に収まらない場合は、追加のノード行が生成されます。

4

1 に答える 1

3

可能な(悪いが機能する)解決策は、非表示のノードを使用して幅を設定することです。次の点を考慮してください。

digraph g {
  compound=true;

    subgraph cluster_top {
      graph [color=black, label="Top", rank=min];

      nodeAI0 [style=invisible]
      nodeAI1 [style=invisible]
      nodeAI2 [style=invisible,fixedsize=true,width=1.65]
      nodeA; nodeB; nodeC
      cluster_top_DUMMY [shape=point style=invis]
    }

    subgraph cluster_service {
      graph [color=black, label="Bottom", rank=min];
      node1; node2; node3; node4; node5; extra_long_node
      cluster_bottom_DUMMY [shape=point style=invis]
    }
    cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
}

ここに画像の説明を入力

非表示のノード (NodeAI0 ~ NodeAI2) がスペースを占有します。fixedsize=true,width=1.65 は、最後のものを正確に 1.65 インチにします。

別のより良い解決策は、次のようなものを追加して、関連する長いノードを具体的に設定することです (正しい値を探す必要がないようにするため)。

  node [fixedsize=true,width=0.75]

Compound=true 部分の後。

于 2013-03-28T09:48:56.560 に答える