Consider the following network:
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\begin{document}
\begin{tikzpicture}[node distance=1.7cm]
\tikzstyle{place}=[circle,thick,draw=gray!75,fill=gray!20,minimum size=6mm]
\begin{scope}
\node [place] (s1c) [label=above:$c<0$] {$s_1$};
\node [place] (s2c) [below of=s1c] {$s_2$};
\draw[thick,->] (s2c) to [out=135,in=225] (s1c);
\draw[thick,-|] (s1c) to [out=-45,in=45] (s2c);
\draw[thick,->] (s1c) to [out=90,in=180] (s1c);
\draw[thick,-|] (s2c) to [out=-90,in=0] (s2c);
\end{scope}
\end{tikzpicture}
\end{document}
I would like to change four things in it:
- Have the arrows going from a node to itself make a nice, quarter-circle-like arc, in a natural-looking way. From this answer, I know that I can make a loop, but I don't know how to control the in/out-angles (as well as the arrow-thickness) and I'm thinking that there must be an easier way.
- Have the c<0 be higher above the first node.
- Have a small gap between the arrow start/end and the node. The 'shorten' option seem to just cut off the arrow-graphic such that it looses some of its arrowhead. (Not a problem anymore, see edit below.)
- Have an arrow point from northeast of the first node down to the first node at a 45 degree angle (such that the arrow is at a 270-45=225 degree angle), preferable without having to define another node.
Thanks.
EARLY EDIT:
From this answer, I found that I could fix problem 3. It also shows how to use the looseness
-option to make the arrows from a node to itself look a bit nicer. However, it is still not what I am going for - I would like the curvature to be more evenly spread out throughout the arc of the arrow than the looseness
-option seems to allow.
LATE EDIT: This answer gives an excellent solution to the first of the four problems.