# Drawing large networks

**URL:** <https://forum.graphviz.org/t/drawing-large-networks/270>\
**Category:** Help\
**Created:** [July 21, 2020, 5:36pm UTC](https://forum.graphviz.org/t/drawing-large-networks/270 "2020-07-21T17:36:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mapika](https://avatars.discourse-cdn.com/v4/letter/m/35a633/32.png) [@mapika](https://forum.graphviz.org/u/mapika)\
**Post date:** [July 21, 2020, 5:36pm UTC](https://forum.graphviz.org/t/drawing-large-networks/270/1 "2020-07-21T17:36:01Z")

</div>

Sorry, I’m very new to graphviz so this may have already been answered, but I’ve been working on graph generation using Ocaml and then converting that graph into dot to draw it (because graphviz is the best!). For the first test, I’m creating a fat-tree network up to size of around k = 10 --ideally size of k = 20 (500 nodes). But as I began testing larger k’s (greater than 4 which works well), some of the nodes got out of order(in the picture with k = 6, the pod\_0 should show 12,13,14 left to right instead of 14,12,13 and the graph is very vertically compressed(as seen in the picture of size k=10. Do you have any suggestions to alleviate these two problems? The code is shown below is for k = 6. k =10 is respectively scaled up to hold the increased number of nodes:  
digraph fat\_tree\_topology {  
subgraph cluster\_drew{  
label = “fat-tree k = 6”  
//establish core  
subgraph cluster\_core{  
label = “core”  
{ rank=same 0 1 2 3 4 5 6 7 8 }  
0 -\> 1 -\> 2 -\> 3 -\> 4 -\> 5 -\> 6 -\> 7 -\> 8 [color=grey arrowhead=none];  
}  
node [shape = record];  
//establish nodes  
0 [label = " 0 core-0 "]  
1 [label = " 1 core-1 "]  
2 [label = " 2 core-2 "]  
3 [label = " 3 core-3 "]  
4 [label = " 4 core-4 "]  
5 [label = " 5 core-5 "]  
6 [label = " 6 core-6 "]  
7 [label = " 7 core-7 "]  
8 [label = " 8 core-8 "]  
9 [label = " 9 aggregation-9 "]  
10 [label = " 10 aggregation-10 "]  
11 [label = " 11 aggregation-11 "]  
12 [label = " 12 edge-12 "]  
13 [label = " 13 edge-13 "]  
14 [label = " 14 edge-14 "]  
15 [label = " 15 aggregation-15 "]  
16 [label = " 16 aggregation-16 "]  
17 [label = " 17 aggregation-17 "]  
18 [label = " 18 edge-18 "]  
19 [label = " 19 edge-19 "]  
20 [label = " 20 edge-20 "]  
21 [label = " 21 aggregation-21 "]  
22 [label = " 22 aggregation-22 "]  
23 [label = " 23 aggregation-23 "]  
24 [label = " 24 edge-24 "]  
25 [label = " 25 edge-25 "]  
26 [label = " 26 edge-26 "]  
27 [label = " 27 aggregation-27 "]  
28 [label = " 28 aggregation-28 "]  
29 [label = " 29 aggregation-29 "]  
30 [label = " 30 edge-30 "]  
31 [label = " 31 edge-31 "]  
32 [label = " 32 edge-32 "]  
33 [label = " 33 aggregation-33 "]  
34 [label = " 34 aggregation-34 "]  
35 [label = " 35 aggregation-35 "]  
36 [label = " 36 edge-36 "]  
37 [label = " 37 edge-37 "]  
38 [label = " 38 edge-38 "]  
39 [label = " 39 aggregation-39 "]  
40 [label = " 40 aggregation-40 "]  
41 [label = " 41 aggregation-41 "]  
42 [label = " 42 edge-42 "]  
43 [label = " 43 edge-43 "]  
44 [label = " 44 edge-44 "]  
//establish pods  
subgraph cluster\_pod\_0 {  
label = “pod\_0”  
{ rank=same 9 10 11 }  
{ rank=same 12 13 14 }  
}  
subgraph cluster\_pod\_1 {  
label = “pod\_1”  
{ rank=same 15 16 17 }  
{ rank=same 18 19 20 }  
}  
subgraph cluster\_pod\_2 {  
label = “pod\_2”  
{ rank=same 21 22 23 }  
{ rank=same 24 25 26 }  
}  
subgraph cluster\_pod\_3 {  
label = “pod\_3”  
{ rank=same 27 28 29 }  
{ rank=same 30 31 32 }  
}  
subgraph cluster\_pod\_4 {  
label = “pod\_4”  
{ rank=same 33 34 35 }  
{ rank=same 36 37 38 }  
}  
subgraph cluster\_pod\_5 {  
label = “pod\_5”  
{ rank=same 39 40 41 }  
{ rank=same 42 43 44 }  
}  
//establish edges  
15 -\> 20 [color=grey arrowhead=none];  
16 -\> 20 [color=grey arrowhead=none];  
17 -\> 20 [color=grey arrowhead=none];  
39 -\> 43 [color=grey arrowhead=none];  
40 -\> 43 [color=grey arrowhead=none];  
41 -\> 43 [color=grey arrowhead=none];  
6 -\> 29 [color=grey arrowhead=none];  
7 -\> 29 [color=grey arrowhead=none];  
8 -\> 29 [color=grey arrowhead=none];  
6 -\> 35 [color=grey arrowhead=none];  
7 -\> 35 [color=grey arrowhead=none];  
8 -\> 35 [color=grey arrowhead=none];  
0 -\> 39 [color=grey arrowhead=none];  
1 -\> 39 [color=grey arrowhead=none];  
2 -\> 39 [color=grey arrowhead=none];  
39 -\> 42 [color=grey arrowhead=none];  
40 -\> 42 [color=grey arrowhead=none];  
41 -\> 42 [color=grey arrowhead=none];  
3 -\> 10 [color=grey arrowhead=none];  
4 -\> 10 [color=grey arrowhead=none];  
5 -\> 10 [color=grey arrowhead=none];  
6 -\> 41 [color=grey arrowhead=none];  
7 -\> 41 [color=grey arrowhead=none];  
8 -\> 41 [color=grey arrowhead=none];  
33 -\> 37 [color=grey arrowhead=none];  
34 -\> 37 [color=grey arrowhead=none];  
35 -\> 37 [color=grey arrowhead=none];  
0 -\> 33 [color=grey arrowhead=none];  
1 -\> 33 [color=grey arrowhead=none];  
2 -\> 33 [color=grey arrowhead=none];  
39 -\> 44 [color=grey arrowhead=none];  
40 -\> 44 [color=grey arrowhead=none];  
41 -\> 44 [color=grey arrowhead=none];  
3 -\> 28 [color=grey arrowhead=none];  
4 -\> 28 [color=grey arrowhead=none];  
5 -\> 28 [color=grey arrowhead=none];  
3 -\> 22 [color=grey arrowhead=none];  
4 -\> 22 [color=grey arrowhead=none];  
5 -\> 22 [color=grey arrowhead=none];  
3 -\> 34 [color=grey arrowhead=none];  
4 -\> 34 [color=grey arrowhead=none];  
5 -\> 34 [color=grey arrowhead=none];  
33 -\> 38 [color=grey arrowhead=none];  
34 -\> 38 [color=grey arrowhead=none];  
35 -\> 38 [color=grey arrowhead=none];  
0 -\> 27 [color=grey arrowhead=none];  
1 -\> 27 [color=grey arrowhead=none];  
2 -\> 27 [color=grey arrowhead=none];  
3 -\> 40 [color=grey arrowhead=none];  
4 -\> 40 [color=grey arrowhead=none];  
5 -\> 40 [color=grey arrowhead=none];  
6 -\> 17 [color=grey arrowhead=none];  
7 -\> 17 [color=grey arrowhead=none];  
8 -\> 17 [color=grey arrowhead=none];  
27 -\> 32 [color=grey arrowhead=none];  
28 -\> 32 [color=grey arrowhead=none];  
29 -\> 32 [color=grey arrowhead=none];  
15 -\> 19 [color=grey arrowhead=none];  
16 -\> 19 [color=grey arrowhead=none];  
17 -\> 19 [color=grey arrowhead=none];  
9 -\> 13 [color=grey arrowhead=none];  
10 -\> 13 [color=grey arrowhead=none];  
11 -\> 13 [color=grey arrowhead=none];  
0 -\> 9 [color=grey arrowhead=none];  
1 -\> 9 [color=grey arrowhead=none];  
2 -\> 9 [color=grey arrowhead=none];  
6 -\> 11 [color=grey arrowhead=none];  
7 -\> 11 [color=grey arrowhead=none];  
8 -\> 11 [color=grey arrowhead=none];  
21 -\> 26 [color=grey arrowhead=none];  
22 -\> 26 [color=grey arrowhead=none];  
23 -\> 26 [color=grey arrowhead=none];  
33 -\> 36 [color=grey arrowhead=none];  
34 -\> 36 [color=grey arrowhead=none];  
35 -\> 36 [color=grey arrowhead=none];  
0 -\> 21 [color=grey arrowhead=none];  
1 -\> 21 [color=grey arrowhead=none];  
2 -\> 21 [color=grey arrowhead=none];  
21 -\> 24 [color=grey arrowhead=none];  
22 -\> 24 [color=grey arrowhead=none];  
23 -\> 24 [color=grey arrowhead=none];  
3 -\> 16 [color=grey arrowhead=none];  
4 -\> 16 [color=grey arrowhead=none];  
5 -\> 16 [color=grey arrowhead=none];  
6 -\> 23 [color=grey arrowhead=none];  
7 -\> 23 [color=grey arrowhead=none];  
8 -\> 23 [color=grey arrowhead=none];  
9 -\> 12 [color=grey arrowhead=none];  
10 -\> 12 [color=grey arrowhead=none];  
11 -\> 12 [color=grey arrowhead=none];  
27 -\> 31 [color=grey arrowhead=none];  
28 -\> 31 [color=grey arrowhead=none];  
29 -\> 31 [color=grey arrowhead=none];  
0 -\> 15 [color=grey arrowhead=none];  
1 -\> 15 [color=grey arrowhead=none];  
2 -\> 15 [color=grey arrowhead=none];  
9 -\> 14 [color=grey arrowhead=none];  
10 -\> 14 [color=grey arrowhead=none];  
11 -\> 14 [color=grey arrowhead=none];  
27 -\> 30 [color=grey arrowhead=none];  
28 -\> 30 [color=grey arrowhead=none];  
29 -\> 30 [color=grey arrowhead=none];  
21 -\> 25 [color=grey arrowhead=none];  
22 -\> 25 [color=grey arrowhead=none];  
23 -\> 25 [color=grey arrowhead=none];  
15 -\> 18 [color=grey arrowhead=none];  
16 -\> 18 [color=grey arrowhead=none];  
17 -\> 18 [color=grey arrowhead=none];  
}  
}

 ![bob](https://global.discourse-cdn.com/graphviz/original/1X/da9960a919d3e06fa27dce3e4c1216854d8ed342.png)

---

<div class="post-metadata">

**Author:** ![mapika](https://avatars.discourse-cdn.com/v4/letter/m/35a633/32.png) [@mapika](https://forum.graphviz.org/u/mapika)\
**Post date:** [July 21, 2020, 5:36pm UTC](https://forum.graphviz.org/t/drawing-large-networks/270/2 "2020-07-21T17:36:51Z")

</div>

here is the graph of k =10

 ![bob2](https://global.discourse-cdn.com/graphviz/original/1X/bee07a5b09e39fcc48c5886436f982239e28b6cf.png)

---

<div class="post-metadata">

**Author:** ![steveroush](https://avatars.discourse-cdn.com/v4/letter/s/a9adbd/32.png) [@steveroush](https://forum.graphviz.org/u/steveroush)\
**Post date:** [August 2, 2020, 7:38pm UTC](https://forum.graphviz.org/t/drawing-large-networks/270/3 "2020-08-02T19:38:30Z")

</div>

- I have no suggestions for your first problem. I also note that your “core” nodes are also not in your desired order.
- As for the horizontal nature of the graph, I have several possibilities:
  - make your clusters (more) vertical (one node wide)
  - replace the clusters with html nodes
  - try other layout engines (neato, fdp, circo, twopi), (no more short, fat tree design)
  - separate the pod rank into multiple ranks (invisible edges can do this)
