Tikz: 상태 다이어그램에 양방향 화살표 그리기

Tikz: 상태 다이어그램에 양방향 화살표 그리기

나는 다음과 같은 상태 다이어그램을 그리고 싶습니다: 상태 다이어그램

다음 코드를 사용하고 있습니다.

\documentclass[tikz]{standalone}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
\node[state]                               (0) {0};
\node[state,right=of 0]                    (1) {1};
\node[state,right=of 1]                    (2) {2};
\coordinate[draw=none,right=of 2]          (2-g);
\node[state,right=of {2-g},text depth=0pt] (g) {g};

\draw[
    >=latex,
%   every node/.style={above,midway},% either
    auto=right,                      % or
    loop above/.style={out=75,in=105,loop},
    every loop,
    ]
     (g)   edge[loop above] node {$p_{gg}$}   (g)
       edge             node {$p_{gg-1}$} (2-g)
     (2-g) to               node {$p_{32}$}   (2)
       edge[loop above] node {$p_{22}$}   (2)
     (2)   edge             node {$p_{21}$}   (1)
     (1)   edge[loop above] node {$p_{11}$}   (1)
       edge             node {$p_{10}$}   (0)
     (0)   edge[loop above] node {$p_{00}$}   (0);
\end{tikzpicture}
\end{document}

하지만 모든 화살표를 양방향으로 갖고 싶습니다. 어떻게 해야 하나요? 감사합니다.

답변1

세 가지 스타일만 조정하면 됩니다.

  • 경로의 스타일이 \draw그려집니다.
  • edges 그림 의 스타일 \draw;
  • 가장자리의 스타일이 그려 loop집니다 \draw.

<->명령 에 추가 \draw하고 .append style스타일에 대해 동일한 작업을 수행하는 데 사용할 수 있습니다 every loop.every edge

  \draw[
    >=latex,
    auto=right,
    loop above/.style={out=75,in=105,loop},
    every loop/.append style={<->},
    every edge/.append style={<->},
    <->
  ]
  ...

이중 문제

전체 코드:

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}
  \node[state]                               (0) {0};
  \node[state,right=of 0]                    (1) {1};
  \node[state,right=of 1]                    (2) {2};
  \coordinate[draw=none,right=of 2]          (2-g);
  \node[state,right=of {2-g},text depth=0pt] (g) {g};
  \draw[
    >=latex,
    auto=right,
    loop above/.style={out=75,in=105,loop},
    every loop/.append style={<->},
    every edge/.append style={<->},
    <->
  ]
  (g)   edge[loop above] node {$p_{gg}$}   (g)
  edge             node {$p_{gg-1}$} (2-g)
  (2-g) to               node {$p_{32}$}   (2)
  edge[loop above] node {$p_{22}$}   (2)
  (2)   edge             node {$p_{21}$}   (1)
  (1)   edge[loop above] node {$p_{11}$}   (1)
  edge             node {$p_{10}$}   (0)
  (0)   edge[loop above] node {$p_{00}$}   (0);
\end{tikzpicture}
\end{document}

관련 정보