[Tex/LaTex] How to draw loop arrow and right left arrow

tikz-arrowstikz-pgf

I attempt to draw my map and I'm stuck in drawing the following \

  • drawing a loop above from 1 to 1
  • drawing loop down from -1 to -1
  • drawing bend above arrow from 2 and ending in 3 and bend down arrow from 3 and ending in 2
  • drawing bend above arrow from -2 and ending in -3 and bend down arrow from -3 and ending in -2
  • I also drew an "arrow" from 3 to -4 and another one from 4 to -3 but how to make them appear as a double-headed arrow connecting them. Sorry, I'm still a leTEX learner and I attempted a lot with no luck! This is my attempt and could you please help me and look at my handed drwawing picture as well.

enter image description here

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage[english]{babel}
\usepackage{pgf,tikz} % for a sample picture that is included below
\usetikzlibrary{arrows}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\definecolor{uuuuuu}{rgb}{0.26666666666666666,0.26666666666666666,0.26666666666666666}

\tikzset{graph-1/.style = {
  line cap = round,
 line join = round,
         > = triangle 45,
 x=0.37cm, y=0.37cm,
 every node/.append style = {inner ysep=2mm}
                            }
        }% end of tikzset

    \begin{figure}[ht]
    \centering
    \begin{tikzpicture}[graph-1]

\foreach \x in {0, 2, 4}
\foreach \x/\label in {0/\scriptstyle1, 2/\scriptstyle2, 4/\scriptstyle3, 6/\scriptstyle4, 8/\scriptstyle5}
\draw[fill=uuuuuu]  (\x,1.5) circle (1.3pt) node[above] {$\label$};
%
\foreach \x/\label in {0/\scriptstyle-1, 2/\scriptstyle -2, 4/\scriptstyle-3, 6/\scriptstyle-4, 8/\scriptstyle-5}
\draw[fill=uuuuuu]  (\x,-1.5) circle (1.3pt) node[below] {$\label$};
\foreach \x in {4}
\draw  (\x,1.5) -- (\x+2,-1.5);
\foreach \x in {6}
\draw  (\x,1.5) -- (\x-2,-1.5);
%
%\foreach \x in {0}  [it does not work to draw a loop]
%\draw [uuuuuu,->,gray, loop above] (\x) edge (\x)
%\draw [uuuuuu] (\x) --  (\x)
%\draw (\x) -- (\x)
%
\node[left] at (-.3,0) {$\pi=$};
\end{tikzpicture}
 \end{figure} 
\end{document}

Best Answer

Possible solution:

You should use the proper TikZ commands if you want to create nodes with labels, that is: nodes with labels. Then you can easily draw arrows from one node to the other. Also, it does not make that much sense to use a foreach loop only for one single command.

I amended your code. The two foreach loops create the nodes and give them the names t0, t2, t4, t6, t8 and b0, b2 etc.

You may want to draw the arrows differently.

\documentclass[12pt]{article}
\usepackage{pgf,tikz} 
\usetikzlibrary{backgrounds}
\usetikzlibrary{arrows}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\definecolor{uuuuuu}{rgb}{0.26666666666666666,0.26666666666666666,0.26666666666666666}

\tikzset{graph-1/.style = {
  > = triangle 45,
  x=0.37cm, y=0.37cm }
}% end of tikzset

\begin{figure}[ht]
  \centering
  \begin{tikzpicture}[graph-1]

    \foreach \x/\label in {0/\scriptstyle1, 2/\scriptstyle2, 4/\scriptstyle3, 6/\scriptstyle4, 8/\scriptstyle5}
      \node[fill=uuuuuu,inner sep=1.3pt,circle,label=above:{$\label$}] at (\x,1.5) (t\x) {};

    \foreach \x/\label in {0/\scriptstyle-1, 2/\scriptstyle -2, 4/\scriptstyle-3, 6/\scriptstyle-4, 8/\scriptstyle-5}
      \node[fill=uuuuuu,inner sep=1.3pt,circle,label=below:{$\label$}] at (\x,-1.5) (b\x) {};

    \draw[<->] (t6) -- (b8);
    \draw[<->] (t8) -- (b6);

    \draw[uuuuuu,->] (t0) to[loop below] (t0);
    \draw[uuuuuu,->] (b0) to[loop above] (b0);

    \draw[uuuuuu,->] (t2) to[bend right] (t4);
    \draw[uuuuuu,->] (t4) to[bend right] (t2);
    \draw[uuuuuu,->] (b2) to[bend left] (b4);
    \draw[uuuuuu,->] (b4) to[bend left] (b2);

    \node[left] at (-.3,0) {$\pi=$};
  \end{tikzpicture}
  \hfil

\end{figure} 

\end{document}

enter image description here


Edit: With smaller arrow heads and the loops to the other side.

\documentclass[12pt]{article}
\usepackage{pgf,tikz} 
\usetikzlibrary{backgrounds}
\usetikzlibrary{arrows}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}
\definecolor{uuuuuu}{rgb}{0.26666666666666666,0.26666666666666666,0.26666666666666666}

\tikzset{graph-1/.style = {
  >=stealth,
  x=0.37cm, y=0.37cm }
}% end of tikzset

\begin{figure}[ht]
  \centering
  \begin{tikzpicture}[graph-1]

    \foreach \x/\label in {0/\scriptstyle1, 2/\scriptstyle2, 4/\scriptstyle3, 6/\scriptstyle4, 8/\scriptstyle5}
      \node[fill=uuuuuu,inner sep=1.3pt,circle,label=above:{$\label$}] at (\x,1.5) (t\x) {};

    \foreach \x/\label in {0/\scriptstyle-1, 2/\scriptstyle -2, 4/\scriptstyle-3, 6/\scriptstyle-4, 8/\scriptstyle-5}
      \node[fill=uuuuuu,inner sep=1.3pt,circle,label=below:{$\label$}] at (\x,-1.5) (b\x) {};

    \draw[<->] (t6) -- (b8);
    \draw[<->] (t8) -- (b6);

    \draw[uuuuuu,->] (t0) to[out=135,in=45,looseness=30] (t0);
    \draw[uuuuuu,->] (b0) to[out=-135,in=-45,looseness=30] (b0);

    \draw[uuuuuu,->] (t4) to[bend left] (t2);
    \draw[uuuuuu,->] (t2) to[bend left] (t4);
    \draw[uuuuuu,->] (b2) to[bend left] (b4);
    \draw[uuuuuu,->] (b4) to[bend left] (b2);

    \node[left] at (-.3,0) {$\pi=$};
  \end{tikzpicture}
  \hfil

\end{figure} 

\end{document}

enter image description here