86
votes

Here is a very simplified example of my Dot graph:

strict digraph graphName {
A->B
B->A
}

This creates alt text

Instead I want a single edge shown between A and B but with a double arrow head. I know how to get the double arrowhead as a global option:

strict digraph graphName {
  edge [dir="both"]
A->B
B->A
}

But that looks very ugly, and not all of my edges should be dual headed.

alt text

If I do more processing of the graph and detect the double reference myself and replace the two edges with a single edge, it looks OK. But I'd rather not have to do this extra step

strict digraph graphName {
A->B [dir="both"]
}

alt text

Any better solutions?

2

2 Answers

108
votes

You should just use:

A -> B [dir=both]
74
votes

How about 'concentrate=true'?:

strict digraph graphName {
concentrate=true
A->B
B->A
}

with concentrate=true

From the documentation:

If true, use edge concentrators. This merges multiedges into a single edge and causes partially parallel edges to share part of their paths. The latter feature is not yet available outside of dot.