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: