我正在尝试使用 tikz 绘制以下循环生死链:
我需要的关键要素是:
- 圆圈内的标签
- 箭头位于箭头中间
- 图表底部的省略号
- 每个节点都有朝两个方向的箭头。
我在这里发现了一个非常相似的:绘制循环箭筒,但缺少指向两个方向的箭头和节点内的标签。
任何帮助都将不胜感激(并且代码的解释也会非常有帮助!)
谢谢!! :)
答案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)。