2017-09-03 10 views
1

以下Graphvizのノードは、C字状に配置:Graphvizクラスタは内部ノードのレイアウト順を変更します - 修正方法は?予想されるようにドットを使用してレンダリングするとき

を:、Z字状にレイアウトの変更を以下のようにIクラスタ内のノードを入れ

digraph G { 
newrank=true; 
"001_getCtInputChunk" [shape=rect, label="@disk_cache\ngetCtInputChunk"]; 
"004_augmentCtInputChunk" [shape=rect, label=augmentCtInputChunk]; 
"002_cache_dir" [shape=cylinder, label="Cache Dir\n(.pkl.gz)"]; 
"003_LunaDataset" [shape=box3d, label=LunaDataset]; 
"001_getCtInputChunk" -> "002_cache_dir"; 
"002_cache_dir" -> "001_getCtInputChunk"; 
"001_getCtInputChunk" -> "003_LunaDataset"; 
"003_LunaDataset" -> "004_augmentCtInputChunk"; 
subgraph { 
rank=same; 
"001_getCtInputChunk" [shape=rect, label="@disk_cache\ngetCtInputChunk"]; 
"002_cache_dir" [shape=cylinder, label="Cache Dir\n(.pkl.gz)"]; 
} 

subgraph { 
rank=same; 
"004_augmentCtInputChunk" [shape=rect, label=augmentCtInputChunk]; 
"003_LunaDataset" [shape=box3d, label=LunaDataset]; 
} 

} 

enter image description here

digraph G { 
newrank=true; 
subgraph cluster_dsets { 
label="dsets.py"; 
shape=rect; 
"001_getCtInputChunk" [label="@disk_cache\ngetCtInputChunk", shape=rect]; 
"004_augmentCtInputChunk" [label=augmentCtInputChunk, shape=rect]; 
"002_cache_dir" [label="Cache Dir\n(.pkl.gz)", shape=cylinder]; 
"003_LunaDataset" [label=LunaDataset, shape=box3d]; 
} 

"001_getCtInputChunk" -> "002_cache_dir"; 
"002_cache_dir" -> "001_getCtInputChunk"; 
"001_getCtInputChunk" -> "003_LunaDataset"; 
"003_LunaDataset" -> "004_augmentCtInputChunk"; 
subgraph { 
rank=same; 
"001_getCtInputChunk" [label="@disk_cache\ngetCtInputChunk", shape=rect]; 
"002_cache_dir" [label="Cache Dir\n(.pkl.gz)", shape=cylinder]; 
} 

subgraph { 
rank=same; 
"004_augmentCtInputChunk" [label=augmentCtInputChunk, shape=rect]; 
"003_LunaDataset" [label=LunaDataset, shape=box3d]; 
} 

} 

enter image description here

どのように私は、クラスタ化されたノードを強制することができますクラスター化されていないものと同じCの形で自分自身をレイアウトするのですか?私の実際のグラフはかなり複雑で、いくつかの場所でこの問題があるので、私は一般的な解決策を好むでしょう。

私は現在、関連性のある場合に、グラフを生成するためにpydotを使用しています。

答えて

1

あなたが探している結果に非常に近づくために、いくつかの細部を変更しました。 dir=bothを使用すると(2つの明示的なエッジの代わりに)nodesepの方が少し良い分離が得られ、矢じりのための十分な余裕ができます。もちろん、dir-bothは、左に大きい方の方向をrank=sameで描くので、反転していたノードが宣言された順序で現れるようになります。最後に、一番左の要素の幅を変更して、より整列させるようにしました。

digraph G { 

nodesep=0.5; 

newrank=true; 

subgraph cluster_dsets { 
    label="dsets.py"; 
    shape=rect; 
    "001_getCtInputChunk" [label="@disk_cache\ngetCtInputChunk", shape=rect, width=1.8]; 
    "004_augmentCtInputChunk" [label=augmentCtInputChunk, shape=rect]; 
    "002_cache_dir" [label="Cache Dir\n(.pkl.gz)", shape=cylinder]; 
    "003_LunaDataset" [label=LunaDataset, shape=box3d, width=1.8]; 
    } 

"001_getCtInputChunk" -> "002_cache_dir" [dir=both]; 
"001_getCtInputChunk" -> "003_LunaDataset"; 
"003_LunaDataset" -> "004_augmentCtInputChunk"; 

subgraph { 
    rank=same; 
    "001_getCtInputChunk" [label="@disk_cache\ngetCtInputChunk", shape=rect]; 
    "002_cache_dir" [label="Cache Dir\n(.pkl.gz)", shape=cylinder]; 
    } 

subgraph { 
    rank=same; 
    "004_augmentCtInputChunk" [label=augmentCtInputChunk, shape=rect]; 
    "003_LunaDataset" [label=LunaDataset, shape=box3d]; 
    } 

} 

enter image description here

関連する問題