Graphviz outputs a mess

Here’s a some steps in a better direction:

  • nodesep is not a node-attribute – and it probably doesn’t do what you expected. But it still is useful in your case:

    … this affects the spacing between loops on a single node, or multiedges
    between a pair of nodes.

  • I don’t think edge weight changes something if you change it for all edges.
  • Enabling splines is often a good idea.
  • Adding additional space around the nodes can be done with sep
  • overlap has more values than true/false – I often find scalexy useful.
  • Once the node distribution is ok, you may fine-tune label positions by using a combination of headlabel/taillabel, labeldistance and labelangle (red in the example below to make them stand out).

Here’s the modified sample:

digraph n {
splines=true;
sep="+25,25";
overlap=scalexy;
nodesep=0.6;
node [fontsize=11];
//edge[weight=0.2];

A -> B [label="I/5"]
A -> A [label="*/0"]
A -> C [label="ii/2"]
A -> H [label="vii/1"]
B -> D [label="iii/1"]
B -> E [label="IV/2"]
B -> F [headlabel="V/2", labeldistance=4, labelangle=-10, labelfontcolor=red]
B -> B [label="vi/2"]
C -> F [label="V/2"]
C -> H [label="vii/1"]
D -> E [label="IV/2"]
E -> D [label="iii/2"]
E -> G [label="iv/1"]
E -> F [headlabel="V/3", labeldistance=8, labelangle=-7, labelfontcolor=red]
F -> B [label="I/4"]
F -> B [label="vi/1"]
F -> B [label="*/0"]
G -> B [taillabel="I/5", labeldistance=4, labelangle=15, labelfontcolor=red]
H -> B [label="vi/1"]
}

graphviz output

Leave a Comment