Force the left to right order of nodes in graphviz?
Asked Answered
B

2

8

I want to draw a decision tree chart using graphviz.

The graph I want to draw looks like this:

enter image description here

I am using the following dot language:

graph a {
  A [shape=box; label="A"]
  B [shape=box; label="B"]
  al [shape=none; label="0"]
  bl [shape=none; label="1"]
  br [shape=none; label="0"]

  A -- al [label="0"];
  A -- B [label="1"];
  B -- bl [label="0"];
  B -- br [label="1"];

}

However my resulting graph looks like this:

enter image description here

How can I force the left to right order of the nodes generated by graphviz? Furthermore, as far as decision trees go are these two trees exactly the same even though the left to right ordering is different?

Bel answered 25/4, 2015 at 11:47 Comment(2)
What language are you using?Evangelinaevangeline
@TimBiegeleisen Hi Tim, I am just writing the .gv file by hand.Bel
E
5

To fix this, you can just change the order of the B and al nodes:

graph a {
  A [shape=box; label="A"]
  al [shape=none; label="0"]
  B [shape=box; label="B"]
  bl [shape=none; label="1"]
  br [shape=none; label="0"]

  A -- al [label="0"];
  A -- B [label="1"];
  B -- bl [label="0"];
  B -- br [label="1"];
}

By the way, the graphviz website had a forum post about this problem which you can have a look at if you get a chance.

Evangelinaevangeline answered 25/4, 2015 at 12:16 Comment(0)
T
3

Just note to anyone hitting this post because of "left to right" in the title. @marapet has an excellent answer to this post noting that order of appearance does not preserve layout. If you find that left-right layout is established at a certain point in the diagram, then broken by subsequent edges, try adding constraint=false to subsequent edges to prevent them from altering existing l-r layout.

Told answered 15/4, 2019 at 20:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.