Reputation: 711
I am trying to force position of nodes. I have x and y coordinates of my nodes and its also directed graph. I can use the rank=same to handle row (y coordinate), but can't figure out how I can handle column (x coordinate).
Upvotes: 71
Views: 63415
Reputation: 51
Here is an example I found: https://observablehq.com/@magjac/placing-graphviz-nodes-in-fixed-positions
Essentially the position attribute "pos" can be specified for a node. Only works with neato or fdp layout engines, not dot.
The !
indicates that the position is an input and should not be altered.
Upvotes: 5
Reputation: 4356
You can use pos attribute (https://www.graphviz.org/doc/info/attrs.html#d:pos), e.g.:
xxx [
label = xxx
pos = "0,0!"
]
yyy [
label = yyy
pos = "10,10!"
]
You will also have to specify neato
or fdp
layout engine, so that dot
command-line would be (for fdp):
dot -Kfdp -n -Tpng -o sample.png sample.dot
Upvotes: 79
Reputation: 5350
I couldn't get the -n
flag work with dot -Kfdp
.
I was however able to get it working with neato using the following command:
neato sample.dot -n -Tpng -o sample.png
Upvotes: 0