2011-07-06 15 views
3

Graphvizダイアグラムの要素の垂直方向と水平方向の位置を制御する方法が重要です。Graphvizのレイアウト

図の抜粋(wysiwigエディタで作成)を検討してください。

enter image description here

私はそれが私の目的に適しているかどうかを把握するためにGraphvizの中でそれを再現しようとしていました。

digraph G { 
compound=true; 
node [shape=box]; 
edge [dir=none]; 
    subgraph cluster_tmk_web6 { 
     nginx [label="nginx-frontend TCP 0.0.0.0:80"]; 

     subgraph clusteradminapp { 
      unicorn [label="unicorn_rails TCP 127.0.0.1:8080"]; 
      subgraph clusterROR { 
      label="ROR v.2.1"; 
      brida [label="brida_face_client"]; 
      } 
      label="Admin App"; 
     } 

     memcached [label="memcached"]; 
     sphinx; 
     mongodb; 

     subgraph cluster_errbit { 
      unicorn2; 
      ror3; 
     } 

    label="tmk-web6.service.home"; 
    }  

nginx -> unicorn; 
memcached -> brida [lhead=clusterROR]; 


} 

そして結果はenter image description here

よう

を行く私は矢印の一部を省略したが、ポジショニングは私のために非常に重要です。 「memcached」と「sphinx」をクラスタの一番下に移動するにはどうすればよいですか?どのように 'mongodb'を右にシフトするのですか?最後に、この図はこのサイズの約6〜10個のクラスタで構成されます。レイアウトを制御し、いくつかのクラスタを行に配置したり、他のものを上下に配置するにはどうすればよいですか?私はここで "ランク"属性を使うべきだと思いますが、どうしたらいいか分かりません。助けてください。残りのエッジ(と2見えないエッジ)を追加することでわずか

答えて

12

、graphvizの出力は、ご希望の結果に近づく:

digraph G { 
compound=true; 
node [shape=box]; 
edge [dir=none]; 
    subgraph cluster_tmk_web6 { 
     nginx [label="nginx-frontend TCP 0.0.0.0:80"]; 

     subgraph clusteradminapp { 
      unicorn [label="unicorn_rails TCP 127.0.0.1:8080"]; 
      subgraph clusterROR { 
      label="ROR v.2.1"; 
      brida [label="brida_face_client"]; 
      } 
      unicorn -> brida[style=invis]; 
      label="Admin App"; 
     } 

     memcached [label="memcached"]; 
     sphinx; 
     mongodb; 

     subgraph cluster_errbit { 
      unicorn2; 
      ror3; 
      unicorn2 -> ror3[style="invis"]; 
      label="Errbit"; 
     } 

    label="tmk-web6.service.home"; 
    }  

nginx -> unicorn; 
nginx -> unicorn2; 
brida -> memcached [lhead=clusterROR]; 
brida -> sphinx [lhead=clusterROR]; 
ror3 -> mongodb; 
} 

graphviz output

は、いくつかの色などを追加し、あなたがほとんどですそこ。

ただし、Graphvizはwysiwygツールではありません。その強みはの自動ノードのレイアウトです。

+0

合意。 GraphVizは、出力としてのレイアウトを生成するためのものであり、入力としてのものではありません。 – CodeFreezr

関連する問題