I tried to create a simple cyclic graph with this DOT input file:
digraph {
rankdir=LR;
node0 [label = "0", group="bottom"];
node1 [label = "1", group="bottom"];
node2 [label = "2", group="top"];
node3 [label = "3", group="top"];
node0 -> node1;
node1 -> node0;
node2 -> node3;
node3 -> node2;
}
and so far so good, it results in:
but now I want to have the following relationships added to the nodes:
node0 -> node3;
node3 -> node0;
node2 -> node1;
node1 -> node2;
and surprisingly, this results in:
If I remove rankdir=LR;
, I get a vertical graph. I need a simple cyclic graph, since the node placement in space has a connection to what they relate to. So the new connections should be vertical, and the nodes should form a square. Is this possible to achieve using DOT?
One way with dot would be to order the nodes in two rows:
digraph {
0 -> {1 3}
1 -> {0 2}
2 -> {3 1}
3 -> {2 0}
// Put specified nodes on same row:
{rank=same; 0; 1}
{rank=same; 2; 3}
}