The Bic Pen
The Bic Pen

Reputation: 1157

Change distance between edges in dot

Is there a way to control the spacing between edges in dot, similar to the nodesep attribute in the other graphviz layout engines? I would like to keep using dot as the layout engine.

By edges I mean either multi-edges or multi-coloured edges, like in the following example. I would like to decrease the space between the a->b edges or increase the space between the c->d edges.

digraph G {
  nodesep = "0.15"
  a -> b [dir=none color="red"]
  a -> b [dir=none color="blue"]
  a -> b [dir=none color="green"]
  
  c -> d [dir=none color="green:red:blue"]
}

graph

In dot, the nodesep attribute does not have the desired effect.

Upvotes: 1

Views: 469

Answers (3)

The Bic Pen
The Bic Pen

Reputation: 1157

The best solution I've found is to add transparent edges. That way, this solution works regardless of background colour. Since the edges are transparent, overlap is not a problem and all the coloured edges have the same width.

digraph G {
  c -> d [
    dir=none
    penwidth=5
    color="red:transparent:transparent:green:transparent:transparent:blue"
  ]
}

Produces:

graph

This works for an arbitrary number of edges, and the spacing can be controlled by changing the number of transparent edges between each coloured edge.

Upvotes: 0

sroush
sroush

Reputation: 6791

There seems to be a bug in that code, only one leg is thicker (penwidth).
So, this solution used ports:

digraph G {
 // nodesep = "0.15"
 splines=false
 edge[penwidth=7]
  a:sw -> b:nw [dir=none color="red"]
  a -> b [dir=none color="blue"]
  a:se -> b:ne [dir=none color="green"]
  
  c -> d [dir=none color="green:white:white:white:red:white:white:white:blue"]
}

Giving:
enter image description here

Upvotes: 1

sroush
sroush

Reputation: 6791

Assuming a white background, add white (invisible) lines to change the apparent spacing:

digraph G {
  nodesep = "0.15"
  
  c -> d [dir=none color="green:white:white:white:red:white:white:white:blue"]
}

Giving:
enter image description here

Upvotes: 1

Related Questions