Как нарисовать петлевую стрелку и стрелку вправо-влево

Как нарисовать петлевую стрелку и стрелку вправо-влево

Я пытаюсь нарисовать карту, но застреваю на следующем рисунке \

  • рисуем петлю выше от 1 до 1
  • протягиваем петлю вниз от -1 до -1
  • рисуем изгиб вверху стрелки от 2 и заканчиваем на 3 и изгиб вниз стрелки от 3 и заканчиваем на 2
  • рисуем изгиб выше стрелки от -2 и заканчиваем в -3 и изгиб вниз стрелки от -3 и заканчиваем в -2
  • Я также нарисовал "стрелку" от 3 до -4 и еще одну от 4 до -3, но как сделать так, чтобы они выглядели как двунаправленная стрелка, соединяющая их. Извините, я все еще изучаю leTEX, и я много пытался, но безуспешно! Это моя попытка, и не могли бы вы мне помочь и также взглянуть на мою нарисованную вручную картинку.

введите описание изображения здесь

\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}

решение1

Возможное решение:

Вам следует использовать правильный TikЗкоманды, если вы хотите создать узлы с метками, то есть: узлы с метками. Затем вы можете легко нарисовать стрелки от одного узла к другому. Кроме того, не имеет особого смысла использовать цикл foreachтолько для одной единственной команды.

Я исправил ваш код. Два foreachцикла создают узлы и дают им имена t0, t2, t4, t6, t8и b0, b2и т.д.

Возможно, вы захотите нарисовать стрелки по-другому.

\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}

введите описание изображения здесь


Редактировать:С меньшими наконечниками стрел и петлями на другой стороне.

\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}

введите описание изображения здесь

решение2

немного измененный хороший ответДжаспер Хабихт(Я не удержался и сделал это более лаконично :-( ):

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

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

\tikzset{graph-1/.style = {
  >={Stealth[length=1.5mm]},
  x=0.37cm, y=0.37cm,
  every label/.append style = {font=\scriptsize},
  dot/.style = {circle, fill=uuuuuu, inner sep=1.3pt}
  }
}% end of tikzset

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

    \foreach \x/\label in {0/1, 2/2, 4/3, 6/4, 8/5}
    {
      \node[dot,label=$\label$ ] at (\x, 1.5) (t\x) {};
      \node[dot,label=below:$-\label$] at (\x,-1.5) (b\x) {};
    }
    \node[left=3mm] at (0,0) {$\pi=$};

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

        (t4) edge[bend left] (t2)
        (t2) edge[bend left] (t4)
        (b2) edge[bend left] (b4)
        (b4) edge[bend left] (b2);
    \draw[uuuuuu,<->]  (t6) edge (b8)
                (t8) edge (b6);
  \end{tikzpicture}
\end{figure}

\end{document}

результат почти тот же (небольшие различия могут быть в размере наконечников стрел):

введите описание изображения здесь

Связанный контент