14

Often, the default layout of graphs drawn by GraphViz in the dot language is a little "tight." With too little visual space, it's hard to put meaningful labels on edges and the graph can look cluttered.

How do I affect the vertical and horizontal spacing of GraphViz / dot graphs?

TomServo
  • 7,248
  • 5
  • 30
  • 47

2 Answers2

25

DEFAULT

I will start with a simple graph that is laid out by the dot engine in the default manner:

digraph {
node [shape=circle, width=0.4];
A->B
A->D
B->C
D->E 
}

enter image description here

CHANGING HEIGHT

As you can see, the layout is quite tight. Notice that my ranks (rows) naturally go from top to bottom. I can affect the height of the graph by exploiting this and using the ranksep (rank separation) variable to explicitly set the space between the ranks:

digraph { 
node [shape=circle, width=0.4];
ranksep = 1;
A->B
A->D
B->C
D->E 
}

enter image description here

CHANGING WIDTH

Finally, we may want to widen the diagram. Here we use the nodesep variable to increase the space between the nodes (columns):

digraph { 
node [shape=circle, width=0.4];
nodesep=1.5;
A->B
A->D
B->C
D->E 
}

enter image description here

TomServo
  • 7,248
  • 5
  • 30
  • 47
  • Is there any official documentation available? Thanks. – jabellcu Oct 13 '21 at 13:05
  • 1
    @jabellcu Of course, it's at http://graphviz.org It's much-changed since I answered this question four years ago, but looks better now. – TomServo Oct 13 '21 at 14:36
  • 2
    If you're using `dot` command to visualize a generated digraph, you can add these as options to the command: `-Granksep=1` or `-Gnodesep=1.5` etc. – ADTC Nov 24 '21 at 14:37
0

you can use ratio argument as well as specify within the documentation https://graphviz.org/doc/info/attrs.html

VincentP
  • 89
  • 10