Right to left edges in dot (Graphviz)
Asked Answered
H

2

44

I'm trying to display edges going from right to left (i.e. backwards) using dot:

C <- A -> B

The best I could do was:

digraph {
  a -> b;
  c -> a [dir="back"];
  {rank=same;c a b}
}

..which is fine, except I don't like using c -> a when the edge is directed the other way.

So I wanted to share this solution (which didn't seem to be mentioned on SO) and check if I'm missing something obvious.

See: http://www.graphviz.org/doc/info/attrs.html#k:dirType

Horrid answered 2/10, 2009 at 17:10 Comment(1)
This doesn’t solve the problem that the rank of the nodes for the a-c edge still isn’t reversed relative to the graph, unless you write it c -> a. I wish one could just write a <- c. :/Unstudied
R
62

I have no alternative to your usage of dir, but i can make it slightly shorter, if you want horizontal alignment, use the rankdir property of graph, to force direction from left to right.

digraph {
  rankdir=LR;
  a->b;
  c->a [dir="back"];
}
Rouleau answered 6/11, 2009 at 10:13 Comment(0)
A
10

To make edges point backwards by default:

digraph {
  edge [dir="back"];
  a -> b;
  c -> a;
}

Then, override the default to point forwards:

c -> d [dir="forward"];
Adi answered 20/7, 2013 at 17:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.