tikZ 的应用。SIS 流行病模型

tikZ 的应用。SIS 流行病模型

我正在尝试使用 Tikzpicture 绘制 SIS 流行病模型,就像本页中的那样http://pythonhosted.org/epigrass/intromodels.html。我的问题是我无法制作从 I 隔间到 S 隔间的箭头。

此外,我想添加其他超出人口统计范围的箭头(对于这一点,我不知道如何进行)。

我在这里打印我的错误代码:

\begin{tikzpicture}[node distance=6cm,auto,>=latex',every node/.append style={align=center}]
    \node [int] (a)              {$S$};
    \node [int]             (c) [right of=a] {$I$};
    \path[->, auto=false] (a) edge node {$\beta I$ \\[.2em]} (c)
                          (c) edge node {$\gamma$       \\[.2em] } (e) ;
\end{tikzpicture}

答案1

像这样吗?

在此处输入图片描述

我必须定义int样式并包含arrowslatex'。我还right of用新语法(positioning库)替换了righ= of(参见:PGF/TikZ 中“right of=”和“right=of”之间的区别

对于箭头,out of the box我使用了一个coordinate节点,尽管其他一些解决方案也是可能的。

\documentclass[tikz,border=2mm]{standalone}

\usetikzlibrary{arrows,positioning}

\begin{document}

\begin{tikzpicture}[node distance=1cm,auto,>=latex',every node/.append style={align=center},int/.style={draw, minimum size=1cm}]
    \node [int] (S)             {$S$};
    \node [int, right=of S] (I) {$I$};
    \coordinate[right=of I] (out);
    \path[->, auto=false] (S) edge node {$\beta I$ \\[.2em]} (I)
                          (I) edge node {$\gamma$       \\[.2em] } (out) edge  [out=-120, in=-60] node[below] {$\delta$} (S);
\end{tikzpicture}
\end{document}

更新:

Torbjørn T. 对您的代码提出了更多改进:

node {$\beta I$ \\[.2em]}只需将语法替换为node[above] {$\beta I$},即可TiKZ将边标签放置在箭头上方。在这种情况下,由于您已经包含了auto选项,因此不需要,[above]因为边标签会自动按照箭头方向放置。您使用 停止了这种自动化auto=false

使用新arrows.meta库而不是弃用的(尽管仍受支持)arrows。例如,latex'style 已被替换为Latex

新代码为:

\documentclass[tikz,border=2mm]{standalone}

\usetikzlibrary{arrows.meta,positioning}

\begin{document}

\begin{tikzpicture}[node distance=1cm, auto,
    >=Latex, 
    every node/.append style={align=center},
    int/.style={draw, minimum size=1cm}]

   \node [int] (S)             {$S$};
   \node [int, right=of S] (I) {$I$};
   \coordinate[right=of I] (out);
   \path[->] (S) edge node {$\beta I$} (I)
             (I) edge node {$\gamma$} (out) 
                 edge[out=-120, in=-60] node {$\delta$} (S);
\end{tikzpicture}
\end{document}

相关内容