So erhalten Sie einen gekrümmten Pfeil, der am selben Knoten beginnt und endet

So erhalten Sie einen gekrümmten Pfeil, der am selben Knoten beginnt und endet

Hallo, ich versuche, die Grafik unten zu replizieren. Ich habe das meiste davon gemacht, kann aber keinen Weg finden, einen Pfeil an einem Punkt beginnen und enden zu lassen.

Versuchen Sie dies zu replizieren

Ich habe es geschafft, die folgende Abbildung zu erhalten. Und ich komme nicht weiter beim Erstellen der Pfeile auf Knoten E.

Bildbeschreibung hier eingeben

Ich habe den Code unten angehängt

\tikzstyle{state} = [circle, minimum width=2cm, draw=black]
\begin{tikzpicture}[very thick, ->, >=stealth,auto, node distance=4cm]
    \node(shift) [state] {Shift $=1$};
    \node [above of=shift, yshift=-3.5cm] {S};
    \node(add) [state, right of=shift] {Add $=1$};
    \node [above of=add, yshift=-3.5cm] {A};
    \node(init) [state, right of=add] {Init $=1$};
    \node [above of=init, yshift=-3.5cm] {I};
    \node(control) [state, below of=add] {};
    \node [above of=control, yshift=-3.5cm] {C};
    \node(others) [state, below of=control] {};
    \node [above of=others, yshift=-3.5cm] {Others};
    \node(end) [state, right of=control] {Done $=1$};
    \node [above of=end, yshift=-3.5cm] {E};
    \node(reset) [circle, draw=black, fill=black, right of=end, xshift=-1.5cm] {};
    \node [above of=reset, yshift=-3.5cm] {Reset};

    \path (add) edge node [above] {$1$} (shift);
    \path (shift) edge[bend right] node [below left] {LSB/Stop $=00$} (control);
    \path (control) edge[] node [above right] {$1$} (shift);
    \path (control) edge[] node [right] {LSB $=1$} (add);
    \path (init) edge[] node [below right] {$1$} (control);
    \path (end) edge[] node [right] {Start $=1$} (init);
    \path (control) edge[] node [above] {$01$} (end);
    \path (others) edge[] node [above left] {$1$} (end);
    \path (reset) edge[] node [] {} (end);
\end{tikzpicture}

Antwort1

So was ?(Erklärungen finden Sie in der kommentierten Zeile)

Bildschirmfoto

\documentclass[tikz,border=5mm]{standalone}

\begin{document}
\tikzstyle{state} = [circle, minimum width=2cm, draw=black]
\begin{tikzpicture}[very thick, ->, >=stealth,auto, node distance=4cm]
    \node(shift) [state] {Shift $=1$};
    \node [above of=shift, yshift=-3.5cm] {S};
    \node(add) [state, right of=shift] {Add $=1$};
    \node [above of=add, yshift=-3.5cm] {A};
    \node(init) [state, right of=add] {Init $=1$};
    \node [above of=init, yshift=-3.5cm] {I};
    \node(control) [state, below of=add] {};
    \node [above of=control, yshift=-3.5cm] {C};
    \node(others) [state, below of=control] {};
    \node [above of=others, yshift=-3.5cm] {Others};
    \node(end) [state, right of=control] {Done $=1$ };
    \draw (end) to [in=-40,out=220,looseness=5,min distance=30mm]node[above]{Start $=0$} (end);% <------ loop Start=0
    \node [above of=end, yshift=-3.5cm] {E };
    \node(reset) [circle, draw=black, fill=black, right of=end, xshift=-1.5cm] {};
    \node [above of=reset, yshift=-3.5cm] {Reset};

    \path (add) edge node [above] {$1$} (shift);
    \path (shift) edge[bend right] node [below left] {LSB/Stop $=00$} (control);
    \path (control) edge[] node [above right] {$1$} (shift);
    \path (control) edge[] node [right] {LSB $=1$} (add);
    \path (init) edge[] node [below right] {$1$} (control);
    \path (end) edge[] node [right] {Start $=1$} (init);
    \path (control) edge[] node [above] {$01$} (end);
    \path (others) edge[] node [above left] {$1$} (end.200);%<--- arrows a little above 
    \path (reset) edge[] node [] {} (end);
   %\node [circle,draw] at (end){} edge [in=30,out=60,loop] ();
\end{tikzpicture}
\end{document}

Nachtrag:

\tikzstyleist veraltet, verwenden Sie \tikzsetstattdessen, was Folgendes ergibt:

\documentclass[tikz,border=5mm]{standalone}

\begin{document}
%\tikzstyle{state} = [circle, minimum width=2cm, draw=black]
\tikzset{state/.style={circle, minimum width=2cm, draw=black}}
\begin{tikzpicture}[very thick, ->, >=stealth,auto, node distance=4cm]
    \node(shift) [state] {Shift $=1$};
    \node [above of=shift, yshift=-3.5cm] {S};
    \node(add) [state, right of=shift] {Add $=1$};
    \node [above of=add, yshift=-3.5cm] {A};
    \node(init) [state, right of=add] {Init $=1$};
    \node [above of=init, yshift=-3.5cm] {I};
    \node(control) [state, below of=add] {};
    \node [above of=control, yshift=-3.5cm] {C};
    \node(others) [state, below of=control] {};
    \node [above of=others, yshift=-3.5cm] {Others};
    \node(end) [state, right of=control] {Done $=1$ };
    \draw (end) to [in=-40,out=220,looseness=5,min distance=30mm]node[above]{Start $=0$} (end);% <------ loop Start=0
    \node [above of=end, yshift=-3.5cm] {E };
    \node(reset) [circle, draw=black, fill=black, right of=end, xshift=-1.5cm] {};
    \node [above of=reset, yshift=-3.5cm] {Reset};

    \path (add) edge node [above] {$1$} (shift);
    \path (shift) edge[bend right] node [below left] {LSB/Stop $=00$} (control);
    \path (control) edge[] node [above right] {$1$} (shift);
    \path (control) edge[] node [right] {LSB $=1$} (add);
    \path (init) edge[] node [below right] {$1$} (control);
    \path (end) edge[] node [right] {Start $=1$} (init);
    \path (control) edge[] node [above] {$01$} (end);
    \path (others) edge[] node [above left] {$1$} (end.200);%<--- arrows a little above 
    \path (reset) edge[] node [] {} (end);
   \end{tikzpicture}
\end{document}

verwandte Informationen