3

私はgraphvizを初めて使用し、グラフ内の相対的なノードの位置を決定する方法を知りたいと思っています. たとえば、単純な三角形 'abc' を描画したい場合、ノード 'a' が一番上にあり、ノード 'b' と 'c' が一番下の同じレベルにあります。必要に応じてノード?

私は次のことを試しました:

graph G
{
   node [shape="circle"];
   edge [lblstyle="auto"];

   {rank=min; "a"}
   a -- b [label = "-"];
   a -- c [label = "-"];
   {rank=same; "b" "c"}
   b -- c [label = "+"];
}

ただし、出力はノード「a」と「b」を同じレベルの一番上に配置し、ノード「c」を一番下に配置します。

さらに、同じグラフに2つのそのような三角形を並べて(間に適切なスペースを置いて)描くことは可能ですか?もしそうなら、それはどのように実装されていますか?

どうもありがとう。

4

1 に答える 1

6

ただし、出力はノード「a」と「b」を同じレベルの一番上に配置し、ノード「c」を一番下に配置します。

実際には、b と c の上に中央揃えの a が表示されます (画像を参照)。

少し簡略化されたマークアップ(lblstyleとは何ですか?)は、ドットでレンダリングすると、必要なものを達成するようです:

graph G
{
   node[shape=circle];

   a -- b [label = "-"];
   a -- c [label = "-"];
   {rank=same; b -- c [label="+"];}
}

graphviz トライアングル FTW

どのバージョンのグラフビズを使用していますか?

そして、2 つの三角形を並べて表示するには、次のようにします。

graph G
{
   node[shape=circle];
   edge[label="-"];


   a -- b;
   a -- c;
   {rank=same; b -- c [label="+"];}

   d -- e;
   d -- f;
   {rank=same; e -- f [label="+"];}
}

しかし、物事がより複雑になると、graphviz ですべてを思いどおりにレイアウトすることが難しくなる可能性があります。ユーザーが介入しないようにレイアウト アルゴリズムを適用することは、実際には graphviz の強みです。

于 2011-07-18T21:12:11.660 に答える