I'm trying to draw a pretty simple diagram in dot.
digraph untitled
{
rankdir = LR;
{rank=same; S; A}
B -> A;
B -> S;
A -> A;
S -> S;
A -> S ;
S -> A;
A -> T;
S -> T;
}
The results I get is
I really have to change the edge from S -> S
, but I would also like to change the orientation of the arrows so they loop from left to right.
To change the orientation of any arrow, you may simply use dir=back
:
S -> S [dir=back];
But in your case this doesn't seem to be necessary... (see below)
Because of the overlap between the edge S -> S
and the A -> S
and S -> A
edges, I suggest to use only one edge between S and A with an arrowhead on both ends:
digraph g {
rankdir = LR;
{rank=same; S; A}
B -> A -> T;
B -> S -> T;
A -> A;
S -> S;
A -> S[dir=both];
}
I don't know if it is possible to make the arrows loop from left to right. You can exercise a degree of control on the arrows by the use of the dir option eg
S->S[dir=both];
In addition you can influence the layout by changing the length of the link from S to S. You can also control the directions of (non-self referential) arrows by reversing the order the nodes are listed eg:
S->T;
becomes
T->S;
I have found that it nearly always produces better diagrams, the less it is constrained. I would suggest experimenting with removing the rank=same command.