這麼複雜的馬可夫鏈圖怎麼畫呢?

這麼複雜的馬可夫鏈圖怎麼畫呢?

我正在寫一篇論文,需要如下圖這樣的圖表。但看起來很複雜,我不知道如何輕鬆地畫它,我的導師告訴我可以使用 Inkscape 或 xfi​​g,而我對這兩個工具不熟悉。我的論文提交截止日期即將到來,所以我需要盡快完成我的論文草稿,我非常感謝您對我的繪圖的幫助。

在此輸入影像描述

答案1

這裡有一些技巧可以幫助您實現目標。使用matrix自動填充的。這是一個大矩陣,無論您在其中|[o]|自動放置一個具有正確內容的節點,它都會被填充。kZ 追蹤行索引和列索引,因此我們可以使用

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}

相關內容