3

I am using this piece of commands:

\begin{figure}
    \centering
    \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=4cm,
                thick,main node/.style={circle,draw,font=\Large\bfseries}]
        \node[main node] (S) {$S$};
        \node[main node] (R) [below left of=S] {$R$};
        \node[main node] (B) [below right of=S] {$B$};
    \path
    (S) edge [loop above] node {0.4} (S)
        edge [bend right] node {0.2} (R)
        edge node [above] {0.4} (B)
    (R) edge node [below] {0.15} (S)
        edge [loop left] node {0.5} (R)
        edge node [below] {0.35} (B)
    (B) edge [bend right] node {0.2} (S)
        edge [bend left] node {0.35} (R)
        edge [loop right] node {0.45} (B);



\end{tikzpicture}
\caption {Your caption here}
\label{fig:your _ label _ here}

\end{figure}

This is the result:

enter image description here

As you can see the labels on the arrows are overlapping on each other but also on the arrows themselves. How can I avoid this?

3 Answers3

7

You can use swap for this purpose:

enter image description here

Note: Consider changing from the arrows library to arrows.meta.

\documentclass{article}

\usepackage{tikz} \usetikzlibrary{arrows}

\begin{document}

\begin{tikzpicture}[->,>=stealth,shorten >=1pt,auto,node distance=4cm,
            thick,main node/.style={circle,draw,font=\Large\bfseries}]
    \node[main node] (S) {$S$};
    \node[main node] (R) [below left of=S] {$R$};
    \node[main node] (B) [below right of=S] {$B$};
    \path
    (S) edge [loop above] node {0.4} (S)
        edge [bend right] node[swap] {0.2} (R)
        edge node [swap] {0.4} (B)
    (R) edge node [swap] {0.15} (S)
        edge [loop left] node {0.5} (R)
        edge node [above] {0.35} (B)
    (B) edge [bend right] node[swap] {0.2} (S)
        edge [bend left] node {0.35} (R)
        edge [loop right] node {0.45} (B);   
\end{tikzpicture}

\end{document}

Sandy G
  • 42,558
6

For fun, a way to obtain this diagram with pstricks– more precisely with the psmatrix environment from pst-node:

\documentclass{article}
\usepackage{pst-node}

\begin{document}

\begin{psmatrix}[rowsep=2cm] %%% Matrix nodes & \circlenode{S}{S} \ \circlenode{R}{R} & & \circlenode{B}{B} %% Line Arrows \psset{arrows=->, arrowinset=0.2, nodesep=0pt, nrot=:U} \ncline{R}{S} \nbput{0.15} \ncline{R}{B} \naput{0.35} \ncline{S}{B} \nbput{0.35} %% Curved Arrows \psset{arcangle=30, arrows=<- } \ncarc{R}{S} \naput{0.2} \ncarc{S}{B} \naput{0.2} \ncarc[arcangle=-30]{R}{B} \nbput{0.35} \end{psmatrix}

\end{document}

enter image description here

Bernard
  • 271,350
4

By use of quotes library and ' as an abbreviation for swap option:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                positioning,
                quotes}
\usepackage{bm}

\begin{document} \begin{tikzpicture}[ node distance = 4cm and 3cm, N/.style = {circle, draw, font=\Large, minimum size=1.1em}, every edge/.style = {draw, -Stealth, semithick, shorten >=1pt}, every edge quotes/.style = {auto=right, inner sep=2pt} ] \node[N] (S) {$\bm{S}$}; \node[N] (R) [below left of=S] {$\bm{R}$}; \node[N] (B) [below right of=S] {$\bm{B}$}; % \path (S) edge [loop above,"0.4" '] () edge [bend right,"0.2"] (R) edge ["0.4"] (B) (R) edge [loop left,"0.5" '] () edge ["0.15"] (S) edge ["0.35"] (B) (B) edge [loop right,"0.45" '] () edge [bend right,"0.2"] (S) edge [bend left,".35"] (R) ; \end{tikzpicture} \end{document}

enter image description here

Zarko
  • 296,517