2016-10-25 22 views
1

私はGraphVizを発見しました。ドキュメントと例の後で、かなり単純なネットワーク図を作成しようとしています。cluster_を使用した場合のサブグラフの位置の問題

私は3つの主要なカテゴリに分割しようとしましたが、3つのカテゴリを上から下にレイアウトしたいと考えています:ハイパーバイザー - >コア - >エッジ。

次のコードは素晴らしいレンダリングですが、私が試してsubgraph coresubgraph cluster_coreに変換しようとすると少し変化します。突然coreが左側に移動し、ノードが垂直に配置されます(ノードの場合はrankdirrank=sameで上書きされます)。 - しかし、実際には外側の境界線とラベルが必要です。私はここに何かを逃していますか椅子とコンピュータの間に問題がありますか?

私がこれまで持っているコードです:あなたはcluster_coreのグループノードは{}を使用しなければなりません

digraph network { 
    graph [overlap = false] 

    // Node definitions 
    subgraph core { 
    rank = same 
    labelloc = c 
    label = "Core" 

    node [shape=square] 
     SR_CORE DR_CORE 

    node [shape=plaintext] 
     ROUTE2 ROUTE1 

    } 

    subgraph cluster_hypervisors { 
    rank = same 
    labelloc = c 
    style = filled 
    label = "Hypervisors" 

    node [shape=circle style=filled fillcolor=white] 
     NODE01 NODE02 NODE03 NODE04 
    } 

    subgraph cluster_edge { 
    rank = same 
    labelloc = c 
    label = "Edge" 

    node [shape=rectangle] 
     SWITCH01 SWITCH02 SWITCH03 
    } 

    // Edge definitions 
    SR_CORE -> ROUTE2 -> DR_CORE [dir=none] 
    SR_CORE -> ROUTE1 -> DR_CORE [dir=none] 

    SR_CORE -> { SWITCH01 SWITCH02 } 
    DR_CORE -> { SWITCH03 } 

    NODE01 -> SR_CORE [dir=back] 
    NODE02 -> SR_CORE [dir=back] 
    NODE03 -> DR_CORE [dir=back] 
    NODE04 -> DR_CORE [dir=back] 

} 

答えて

1

。外観を調整するにはあなたはまた、いくつかのエッジにいくつかのconstraint=falseを追加することができます。

digraph network { 
    graph [overlap = false] 

    // Node definitions 
    subgraph cluster_core { 
    rank = same 
    labelloc = c 
    label = "Core" 

    node [shape=square] 
     SR_CORE DR_CORE 

    node [shape=plaintext] 
     ROUTE2 ROUTE1 

    {SR_CORE DR_CORE ROUTE2 ROUTE1} 
    } 

    subgraph cluster_hypervisors { 
    rank = same 
    labelloc = c 
    style = filled 
    label = "Hypervisors" 

    node [shape=circle style=filled fillcolor=white] 
     NODE01 NODE02 NODE03 NODE04 
    } 

    subgraph cluster_edge { 
    rank = same 
    labelloc = c 
    label = "Edge" 

    node [shape=rectangle] 
     SWITCH01 SWITCH02 SWITCH03 
    } 

    // Edge definitions 
    SR_CORE -> ROUTE2 [dir=none] 
    SR_CORE -> ROUTE1 [dir=none, constraint=false] 
    ROUTE2 -> DR_CORE [dir=none, constraint=false] 
    ROUTE1 -> DR_CORE [dir=none, constraint=false] 

    SR_CORE -> { SWITCH01 SWITCH02 } 
    DR_CORE -> { SWITCH03 } 

    NODE01 -> SR_CORE [dir=back] 
    NODE02 -> SR_CORE [dir=back] 
    NODE03 -> DR_CORE [dir=back] 
    NODE04 -> DR_CORE [dir=back] 
} 

enter image description here

あなたが返信するの遅れて申し訳ありませんhttp://graphviz.it/#/mRSLblIF

+0

に取り組ん例を確認することができ、私はSOの通知を受けて停止しているように見えます私の電子メールに送信し、しばらくログオンしていない。 助けてくれてありがとう、私はそれを逃したとは思わなかった!私は今もエッジの制約でパワーを見ています! – absolutejam

関連する問題