2013-03-03 10 views
18

ノード間に垂直または水平エッジのみを表示するドットを強制したいと思います。ドットで直交(垂直または水平)エッジを強制する

は私が次のグラフを構築する場合...

私はポストFamily tree layout with Dot/GraphVizと同様の要求を発見したが、私は木を扱っておりませんので、私は挿入する余分なノードのない解決策がある願っています:

 
digraph G { 

    splines=ortho 

    A [ shape=box ] 
    B [ shape=box ] 
    C [ shape=box ] 
    D [ shape=box ] 

    A -> B 
    A -> C 

    B -> D 
    C -> D 

} 

は、私は何を得ることはこれです:

enter image description here

しかし、私はこのようなグラフを希望:

enter image description here

にはどうすれば、このようなレンダリングを得ることができますか?

編集:「スプライン」属性が期待どおりに機能していないようです...私が間違ったことはありますか?

答えて

23

構文が正しいようです。私はそれを実行すると、私は(種類の)直交エッジルーティングを取得:

enter image description here

あなたはどのバージョンを持っていますか?

直交エッジ配線は、2010年9月28日以降のGraphvizバージョンでのみ利用可能です。すべてのシステムに最新のバージョンがパックされているわけではありません。私のシステムでは、downloadにしてGraphvizをインストールして2.26.3より新しいバージョン(2010年1月26日以降)を入手しなければなりませんでした。あなたの実際のグラフを仮定し

は、あなたが行が曲がりを持ちたいとあなたが余分な(見えない)ノードを追加したくない場合は、あなたが グラフnodesep属性で遊んでみてください、以上の4つのノードが含まれています。下のコードと画像を参照してください。

digraph G { 

    graph [splines=ortho, nodesep=1] 
    node [shape=record] 

    A -> {B, C} -> D 
} 

enter image description here

関連する問題