동일한 노드에서 시작하고 끝나는 곡선 화살표를 얻는 방법

동일한 노드에서 시작하고 끝나는 곡선 화살표를 얻는 방법

안녕하세요, 아래 그래프를 복제하려고 합니다. 나는 대부분의 작업을 수행했지만 화살표가 시작되고 끝나는 방법을 알아낼 수 없습니다.

이것을 복제하는 것을 목표로 하세요.

나는 아래 그림을 얻었습니다. 그리고 노드 E에서 화살표를 생성하는 데 막혔습니다.

여기에 이미지 설명을 입력하세요

아래에 코드를 첨부했습니다

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

답변1

이와 같이 ?(설명은 주석 처리된 줄 참조)

스크린샷

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

부록:

\tikzstyle더 이상 사용되지 않습니다 \tikzset. 대신 다음을 제공하는 것을 사용하십시오.

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

관련 정보