2017-09-03 24 views
1

다음은 GraphVIZ 노드는 C 모양으로 배열 :Graphviz 클러스터는 내부 노드의 레이아웃 순서를 바꿉니다 - 어떻게 수정합니까? 예상대로 점을 사용하여 렌더링 할 때

을 : A ~ Z 모양의 레이아웃 변경을 다음과 같이 내가 클러스터에 노드를 넣어

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이 사용되면 (두 개의 명시적인 모서리 대신) 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