如何使用 tikz 绘制下图?

如何使用 tikz 绘制下图?

我正在尝试使用 tikz 绘制以下循环生死链:

在此处输入图片描述

我需要的关键要素是:

  1. 圆圈内的标签
  2. 箭头位于箭头中间
  3. 图表底部的省略号
  4. 每个节点都有朝两个方向的箭头。

我在这里发现了一个非常相似的:绘制循环箭筒,但缺少指向两个方向的箭头和节点内的标签。

我已经画了这个相关图: 在此处输入图片描述

任何帮助都将不胜感激(并且代码的解释也会非常有帮助!)

谢谢!! :)

答案1

我会这样做,但由于您没有提供 MWE(甚至没有提供您已经制作的图表),所以我不知道它是否对您是否有用。

\documentclass[tikz]{standalone}

\usetikzlibrary{decorations.markings}

\tikzset{state/.style={draw,circle,minimum size=1.75cm}}

\begin{document}
    \begin{tikzpicture}
        \node[state] (0)   at ( 90:4) {\( [0]_m \)};
        \node[state] (1)   at ( 45:4) {\( [1]_m \)};
        \node[state] (2)   at (  0:4) {\( [2]_m \)};
        \node[state] (i)   at (270:4) {\( [i]_m \)};
        \node[state] (m-2) at (180:4) {\( [m-2]_m \)};
        \node[state] (m-1) at (135:4) {\( [m-1]_m \)};

        \node[state,draw=none,rotate=315+90] (i-1) at (315:4) {\( \cdots \)};
        \node[state,draw=none,rotate=225+90] (i+1) at (225:4) {\( \cdots \)};

        \begin{scope}[decoration={markings,mark=at position 0.6 with {\arrow{latex}}},every node/.style={auto,font=\small}]
            \foreach \startnode/\endnode in {0/1,1/2,2/i-1,i-1/i,i/i+1,i+1/m-2,m-2/m-1,m-1/0}{
                \draw[postaction={decorate}] (\startnode) to[bend left=25] node[auto] {\( P_{\startnode} \)} (\endnode);
                \draw[postaction={decorate}] (\endnode)   to[bend left=25] node[auto] {\( 1-P_{\endnode} \)} (\startnode);
            }
        \end{scope}
    \end{tikzpicture}
\end{document}

结果如下: 在此处输入图片描述

请注意,Tikz 也有automata库可能更适合这种类型的图表。请参阅第 513 页PGF 手册 (v3.0.1a)

相关内容