0

when I use dot in order to plot the graph which is described by the code below, not all middle lines are parallel (namely the lines A -> I and E -> J):

digraph g {rankdir=LR
node [shape = record, height=0.1];
node0[label = "A ", style="filled", color="black", fillcolor="yellow"];
node1[label = "B "];
node2[label = "C "];
node3[label = "D "];
node4[label = "E "];
node5[label = "F "];
node6[label = "G "];
node7[label = "H "];
node8[label = "I "];
node9[label = "J "];
"node5" -> "node0";
"node5" -> "node2";
"node6" -> "node2";
"node6" -> "node4";
"node0" -> "node1";
"node2" -> "node1";
"node2" -> "node3";
"node4" -> "node3";
"node1" -> "node8";
"node1" -> "node7";
"node3" -> "node7";
"node3" -> "node9";
"node0" -> "node8";
"node5" -> "node1";
"node2" -> "node7";
"node6" -> "node3";
"node4" -> "node9";
}

How can I let dot take this into account and make them parallel?

Thanks for the help!

1 Answers1

1

Graphviz tries to keep edges straight in rank direction if nodes belong to the same group.

digraph g {rankdir=LR
node [shape = record, height=0.1];
{
  node [group=g1];
  node0[label = "A ", style="filled", color="black", fillcolor="yellow"];
  node8[label = "I "];
}
{
  node [group=g2];
  node4[label = "E "];
  node9[label = "J "];
}
node1[label = "B "];
node2[label = "C "];
node3[label = "D "];
node5[label = "F "];
node6[label = "G "];
node7[label = "H "];
"node5" -> "node0";
"node5" -> "node2";
"node6" -> "node2";
"node6" -> "node4";
"node0" -> "node1";
"node2" -> "node1";
"node2" -> "node3";
"node4" -> "node3";
"node1" -> "node8";
"node1" -> "node7";
"node3" -> "node7";
"node3" -> "node9";
"node0" -> "node8";
"node5" -> "node1";
"node2" -> "node7";
"node6" -> "node3";
"node4" -> "node9";
}
stefan
  • 3,681
  • 15
  • 25