[Tex/LaTex] Drawing arrows on the curves lines (transition diagram)

graphstikz-pgftransition

I am trying to replicate the transition diagram below:

desired output

So far, I have managed draw all lines and labelled my nodes with the codes below:

\documentclass[]{article}
\usepackage[margin=0.5in]{geometry}
\usepackage{pgfplots}
\renewcommand{\thesection}{\arabic{section}}
\usepackage{mathtools}
\usepackage{cancel}
\usepackage{pgfplots}
\usepackage{amsmath}
\newtheorem{theorem}{THEOREM}
\newtheorem{proof}{PROOF}
\usepackage{tikz}
\usepackage{amssymb}
\usetikzlibrary{patterns}
\usepackage{fancyhdr}
\usepackage{bigints}
\usepackage{color}
\usepackage{tcolorbox}
\usepackage{color,xcolor}
\usepackage{booktabs,array}
\usepackage{hyperref}
\usepackage{graphicx}
\usetikzlibrary{arrows}
\usepackage{polynom}
\usepackage{flexisym}
\usepackage{wallpaper}
\usepackage{blkarray}
\usepackage{caption}
\usepackage{booktabs, makecell, multirow}
\usepackage{stackengine,graphicx,xcolor}
\usepackage{lscape}
\usetikzlibrary{arrows}
\usepackage{flexisym}
\usetikzlibrary{shapes.geometric}
\newenvironment{tightcenter}{
\setlength\topsep{0pt}
\setlength\parskip{0pt}
\begin{center}}{\end{center}}
\begin{document}

\begin{tikzpicture}
\begin{scope}[a/.style = {insert new path = {-triangle 90}}]
%\draw[thick] (0,0) --+ (1,3) --+ (5,3) --+ (4,0) --+ (0,0);
%\draw[thick] (0,0) --+ (1,1.73) --+ (3,1.73) --+ (4,0)--+ (3,-1.73)--+ (1,-1.73)--+ (0,0);
%
\draw[thick,fill=black] (0,0) circle (1.5mm);
\draw[thick,fill=black] (5,0) circle (1.5mm);
\draw[thick,fill=black] (2.5,-3.5) circle (1.5mm);
%
\node [left] at (-0.15, 0.2) {$C$};
\node [right] at (5.2,0.2) {$S$};
\node [below] at (2.5,-3.7) {$T$};
%\node [right] at (4, 0) {$X$};
%\node [below] at (3, -1.73) {$Y$};
%\node [below] at (1, -1.73) {$Z$};
%
\draw[thick](-0.6,0.5) circle (0.8cm);
\draw[thick](0,0) to [bend right=20](5,0);
\draw[thick](0,0) to [bend left=20](5,0);
%
\draw[thick](5.6,0.5) circle (0.8cm);
\draw[thick](0,0) to [bend right=20](2.5,-3.5);
\draw[thick](0,0) to [bend left=20](2.5,-3.5);
%
\draw[thick](2.5,-4.27) circle (0.8cm);
\draw[thick](5,0) to [bend right=20](2.5,-3.5);
\draw[thick](5,0) to [bend left=20](2.5,-3.5);
%
%\draw[thick,opacity=0.7,fill=black] (2.5,1.5) circle (0.5mm);
%\node[above] at (2.5,1.65) {$M$};
\end{scope}
\end{tikzpicture}
\end{document}

I get the following output:

got this

Could anyone experienced please tell me how I can insert these arrows on the curves?

Thank you.

Best Answer

Better arrow orientation in curves can be done using decorations.markings, which allows you to insert any drawing along a path; then I simplified your code using all the options available by command.

RESULT: enter image description here

MWE:

\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}

\begin{tikzpicture}[
    %Environment config
    %Environment Styles
    Circ/.style={circle, fill, minimum width=12pt},
    MidArrow/.style={
        draw,thick, postaction={decorate,decoration={markings,mark=at position 0.5 with {\fill(0:5pt) -- (120:5pt) -- (240:5pt);}}}}
    ]

    %Drawing the nodes
    %\node[tikzstyle, label=angle_orientation:Text](Node_coordinate_Identifier) at (position_in_polar_coordinates){Text_none};
    \node[Circ, label=30:$S$](S) at (30:2.5){};
    \node[Circ, label=150:$P$](P) at (150:2.5){};
    \node[Circ, label=270:$T$](T) at (270:2.5){};

    %Drawing the arrows
    \draw[MidArrow] (P) to [bend left=20] node[anchor=-90, inner sep=8pt]{40\%} (S);
    \draw[MidArrow] (S) to [bend left=20] node[anchor=-90, inner sep=6pt]{20\%} (P);
    \draw[MidArrow] (P) to [bend left=20] node[anchor=50, inner sep=4pt]{20\%} (T);
    \draw[MidArrow] (T) to [bend left=20] node[anchor=30, inner sep=4pt]{20\%} (P);
    \draw[MidArrow] (T) to [bend left=20] node[anchor=-60, inner sep=8pt]{20\%} (S);
    \draw[MidArrow] (S) to [bend left=20] node[anchor=180, inner sep=6pt]{20\%} (T);
    \draw[MidArrow] (P) arc (150-180:150-180-360:0.8) node [midway, anchor=150-180,inner sep=4pt]{40\%};
    \draw[MidArrow] (S) arc (30-180:30-180-360:0.8) node [midway, anchor=30-180,inner sep=4pt]{60\%};
    \draw[MidArrow] (T) arc (270-180:270-180-360:0.8)node [midway, anchor=270-180,inner sep=6pt]{60\%};

    \end{tikzpicture}
\end{document}

UPDATE:

Adding the possibility to control the arrow head position in the curves; then control the label position using the option pos={0_to_1_value} instead midway that is equivalent to pos=0.5, and \sf to get serif font for percent symbol to reproduce a result more similar to the example,demonstrating the great flexibility provided by basic tikz commands.

RESULT:

enter image description here

MWE:

\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}

\begin{tikzpicture}[
    %Environment config
    %Environment Styles
    Circ/.style={circle, fill, minimum width=12pt},
    InLineArrow/.style={
        draw,thick, postaction={decorate,decoration={markings,mark=at position #1 with {\fill(0:5pt) -- (120:5pt) -- (240:5pt);}}}}
    ]

    %Drawing the nodes
    %\node[tikzstyle, label=angle_orientation:Text](Node_coordinate_Identifier) at (position_in_polar_coordinates){Text_none};
    \node[Circ, label=30:$S$](S) at (30:2.5){};
    \node[Circ, label=150:$P$](P) at (150:2.5){};
    \node[Circ, label=270:$T$](T) at (270:2.5){};

    %Drawing the arrows
    \draw[InLineArrow=0.5] (P) to [bend left=20] node[anchor=-90, inner sep=8pt]{40\sf\%} (S);
    \draw[InLineArrow=0.5] (S) to [bend left=20] node[anchor=-90, inner sep=6pt]{20\sf\%} (P);
    \draw[InLineArrow=0.5] (P) to [bend left=20] node[anchor=50, inner sep=4pt]{20\sf\%} (T);
    \draw[InLineArrow=0.5] (T) to [bend left=20] node[anchor=30, inner sep=4pt]{20\sf\%} (P);
    \draw[InLineArrow=0.5] (T) to [bend left=20] node[anchor=-60, inner sep=8pt]{20\sf\%} (S);
    \draw[InLineArrow=0.5] (S) to [bend left=20] node[anchor=180, inner sep=6pt]{20\sf\%} (T);
    \draw[InLineArrow=0.41] (P) arc (150-180:150-180-360:0.8) node [pos=0.41, anchor=180-180,inner sep=7pt]{40\sf\%};
    \draw[InLineArrow=0.58] (S) arc (30-180:30-180-360:0.8) node [pos=0.58, anchor=0-180,inner sep=7pt]{60\sf\%};
    \draw[InLineArrow=0.75] (T) arc (270-180:270-180-360:0.8)node [pos=0.65, anchor=180-180,inner sep=7pt]{60\sf\%};

    \end{tikzpicture}
\end{document}