이렇게 복잡한 마르코프 체인 다이어그램을 그리는 방법은 무엇입니까?

이렇게 복잡한 마르코프 체인 다이어그램을 그리는 방법은 무엇입니까?

저는 다음 그림과 같은 그래프가 필요한 논문을 작성 중입니다. 그런데 너무 복잡해 보이는데 어떻게 쉽게 그리는지 모르겠어요. 감독님이 Inkscape나 xfig를 사용하면 된다고 했는데 저는 이 두 도구가 익숙하지 않거든요. 논문 제출 기한이 곧 다가와서 곧 논문 초안을 마무리해야 하는데, 그림을 그리는 데 도움을 주셔서 정말 감사드립니다.

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

답변1

목표를 달성하는 데 도움이 될 수 있는 몇 가지 요령은 다음과 같습니다. matrix자동으로 채워지는 를 사용하세요 . 이것은 큰 매트릭스로, 어디에 |[o]|자동으로 노드를 배치하든 올바른 콘텐츠가 포함된 노드가 채워집니다. 이는 Ti 때문에 가능합니다.케이Z는 행과 열 인덱스를 추적하므로 다음을 사용할 수 있습니다.

execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},

적절한 숫자를 채우십시오.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[circ/.style={circle,draw,text width=1.2em,align=center,inner
  sep=1pt,font=\sffamily},
  o/.style={circ,
  execute at begin node={\the\numexpr17-\pgfmatrixcurrentrow},
  alias=o-\the\pgfmatrixcurrentcolumn-\the\numexpr17-\pgfmatrixcurrentrow},
  >=latex]
\matrix[matrix of nodes,column sep=3em,row sep=1em,
column 5/.style={nodes={thick}}] (big mat) {
|[o]| & |[o]| & |[o]| & |[o]| &  \\
 & |[o]| & |[o]| & |[o]| &  \\
 & & & & \\
 & & & & \\
 & & & & \\
 & & & & \\
 & |[o]| & |[o]| & |[o]| &  \\
 & |[o]| & |[o]| & |[o]| &  \\
|[o]| & |[o]| & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
 &  & |[o]| & |[o]| &  |[o]|\\
|[o]| & |[o]| &  & |[o]| &  |[o]|\\
 &  &  & |[o]| &  |[o]|\\
|[o,yshift=-2em]| & |[o,yshift=-2em]| & |[o]|  & |[o]| &  |[o]|\\
& |[o,yshift=-2em]| & |[o]|  & |[o]| & \\
$W_t=16$ & $W_t=8$ & $W_t=4$ & $W_t=2$ &  \\
};
\path ([yshift=2.5em,xshift=2em]big mat.south east) 
    node[matrix of nodes,nodes={circ,thick},column sep=1em]
 (small mat) {0 & 0 & 0 & 0 & 0 & 0\\};
\foreach \X in {2,...,8} 
 {\draw[->] (o-5-\X) -- (o-4-\X);}
\foreach \X in {1,...,6} 
{\draw[->] (small mat-1-\X) to[out=90,in=0] (o-4-1.north);} 
\end{tikzpicture}
\end{document}

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

보시다시피 다이어그램의 노드 대부분은 숫자를 지정할 필요 없이 |[o]|여기 저기에 몇 개만 넣으면 됩니다.

작업을 완료하려면 backgrounds라이브러리를 로드하고 배경 레이어에 연결을 그리고 fill=white의 정의에 추가할 수 있습니다 circ. 나는 이것을 시작하려고 시도하지도 않았고, 대답은 대부분의 노드를 자동으로 추가하는 트릭을 언급하는 것뿐입니다.

답변2

Tikz는 이렇게 복잡한 다이어그램을 만들 수 있습니다

문서의 쉬운 예:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
  \draw[help lines] (0,0) grid (3,2);


\node[state,initial] (q_0) {$q_0$}; 
\node[state] (q_1) [above right=of q_0] {$q_1$}; 
\node[state] (q_2) [below right=of q_0] {$q_2$};
\node[state,accepting](q_3) [below right=of q_1] {$q_3$};

\path[->] (q_0) edge node {0} (q_1)
                edge node [swap] {1} (q_2)
          (q_1) edge node        {1} (q_3)
                edge [loop above] node        {0} ()
          (q_2) edge              node [swap] {0} (q_3)
                edge [loop below] node {1} (); 
\end{tikzpicture}

\end{document}

관련 정보