[Tex/LaTex] How to draw direction arrows in lines and arcs

tikz-pgf

I want to draw the following picture. And so far my code is the following:

\begin{tikzpicture}[xscale=1.5,yscale=1.5]
\draw [->] (0,-2) --(0,2) node [left] {${\rm Im}(p)$};
\draw [->] (-2,0) --  (2,0) node [below] {${\rm Re}(p)$};
\draw [thick] (1,-1.8) --(1,1.8);
\draw [fill] (0,-1.8) --(1,-1.8); \draw [fill] (0,1.8) --(1,1.8);
\draw [black] (0,1.8) arc [radius=1.8, start angle=90, end angle = 270];
\draw [fill] (0.5,1) circle [radius=.05];
\draw [fill] (0.5,0.5) circle [radius=.05];
\draw [fill] (0.5,-0.5) circle [radius=.05];
\draw [fill] (0.5,-1) circle [radius=.05];
\node at (1.15,-0.15) [] {$\sigma$};
\draw [fill] [<-] (0.65,1.1)--(1.5,1.5);
\end{tikzpicture}

I would appreciate if anyone could help me draw the direction arrows and is it possible to include text in the graph?

Thank you in advance for your help.

enter image description here

Best Answer

\documentclass[tikz, border=3mm]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}

\begin{tikzpicture}[scale=0.5,
decoration = {markings,
    mark=at position 0.10 with {\arrow {latex}},
    mark=at position 0.35 with {\arrow {latex}},
    mark=at position 0.70 with {\arrow {latex}},
    mark=at position 0.90 with {\arrow {latex}}
              }
                    ]
% axes
\draw [->] (0,-3.3) -- (0,4) node [left]  {${\rm Im}(p)$};
\draw [->] (-3.3,0) -- (4,0) node [below] {${\rm Re}(p)$};
% poles
    \foreach \i in {-2,-1, 1, 2}{\node at (1,\i) {$\times$};}
% curve
\draw[postaction={decorate},thick]
        (2,0) node[below right] {$\sigma$}
              |- (0,3) arc (90:270:3) -| (2,0);
\draw[<-,shorten <=2mm] (1,2)-- ++ (30:1.5) node[right] {poles};
\end{tikzpicture}
\end{document}

gives

enter image description here

Arrows on curve around s-plane are determined by decorations.markings TikZ library.

Related Question