45

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

1
  • 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. :/ Commented Nov 27, 2013 at 4:28

2 Answers 2

64

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"];
}
Sign up to request clarification or add additional context in comments.

Comments

11

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"];

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.