2017-11-20 47 views
1

を編集する:この質問を置き換える新しい質問を投稿した場合。 Align Ranks in Graphvizgraphvizドットの厳密な逆ランキングを達成するにはどうすればよいですか?

まず、タイトルのいくつかの用語を発明/悪用することについてお詫び申し上げます。 「厳密」とは、同じランクのすべてのノードが出力イメージ内で同じy位置を必要とすることを意味しますが、デフォルトでは、それらはわずかにずれています。第2に、「逆」とは、すべての葉が同じランクであり、グラフの一番下の同じ行に表示され、それに応じて祖先がすべ​​てランク付けされて整列される(エッジの向きが反転されない)ことを意味します。私が扱っているグラフは有界な半拘束ですので、循環部分はなく、すべてのノードには明確なランクがあります。

Abstract Syntax Tree

Iは(および「DIR =バック」エッジが元の方向のようを見えるようにすることができ)、エッジ方向を逆にしようとしたが、「厳密な」部分は、依然として問題

enter image description hereあります

+0

をいくつか{ rank = same; ... }アイテムを配置するgraphvizのを生成するアルゴリズムを変更してしまいました。 ? – marapet

答えて

0

は、私は同じY座標上にない同じランクの二つのノードを見ることができない、あなたの最初のグラフでは、出力に

1

すべての葉を下部(最大)ランクに入れる方法は?これは底にすべての葉ノードを配置する必要があり

{ 
    rank=max; 
    leaf1; leaf2; leaf3; 
} 

あなたはすべての休暇のノードを含む部分グラフを含めると属性rank=maxを追加することができます。

+0

これはちょうど葉のために素晴らしいですが、それらの葉の先祖はまだ間違った階級にいます。 – Brent

関連する問題