Рисование стрелки на диаграмме SIRS с помощью TikZ

Рисование стрелки на диаграмме SIRS с помощью TikZ

Я пытаюсь создать диаграмму SIRS (восприимчивый-инфицированный-выздоровевший-восприимчивый), которая выглядит следующим образом: введите описание изображения здесь

Я почти у цели; у меня есть все, кроме верхней стрелки, которая идет от Recovered к Susceptible. Вот мой текущий код:

\documentclass[tikz, border=10pt]{standalone}
\usetikzlibrary{positioning, arrows.meta}

\begin{document}

\begin{tikzpicture}[
    node distance=2.5cm,
    arrow/.style={->, >=Stealth, thick},
    box/.style={draw, rectangle, rounded corners, minimum width=2cm, minimum height=1cm, align=center}
]

% Nodes
\node[box] (S) {Susceptible};
\node[box, right=of S] (I) {Infectious};
\node[box, right=of I] (R) {Recovered};

% Arrows
\draw[arrow] (S) -- node[above]{$\beta$} (I);
\draw[arrow] (I) -- node[above]{$\gamma$} (R);

\end{tikzpicture}

\end{document}

И вот что выдает мой код: введите описание изображения здесь

У меня возникли проблемы с рисованием стрелки от Recovered к Susceptible. Как нарисовать стрелку так, чтобы она проходила по полям, не перекрывая их? Любая помощь будет высоко оценена.

решение1

Вот моя первоначальная наивная попытка:

\node (A) [above=0.5cm of I] {$\delta$};
\draw[arrow] (R.north) |- (A.south) -| (S.north); 

Пользователь Sandy G предлагает лучший вариант, а именно использовать технику, которую оказалось на удивление сложно исследовать (оказывается, гуглить --++— это сложно); я нашел этот СТАРЫЙ (11-летний) пост, в котором об этом говорится:TiKz тире тире плюс плюс что привело меня к разделу руководства TikZ13.4 Относительные и инкрементальные координаты

Мы можем указать относительную координату, используя ++перед новой координатой пути, чтобы сделать ее относительной координаты, которая была до нее в пути. Из руководства:

Вы можете добавить префикс ++ к координатам, чтобы сделать их «относительными». Координата, такая как ++(1cm,0pt), означает «на 1 см правее предыдущей позиции, что делает ее новой текущей позицией». Относительные координаты часто полезны в «локальных» контекстах:

Это делает это так же просто, как:

\draw[arrow] (R.north) -- ++(0,0.5) -| (S.north) node[above, pos=0.25] {$\delta$};

Это нарисует узел с севера от узла R, вверх на 0,5, затем соединится с севером S, но сделает резкий поворот, чтобы попасть туда (указано -|). Узел размещается на 0,25 выше пути (который оказывается симметричным) и заполняется $\delta$.

МВЭ

Оба ответа дадут примерно одно и то же изображение, но я подумал, что вам будет интересно увидеть несколько точек зрения.

МВЭ:

\documentclass[tikz, border=10pt]{standalone}
\usetikzlibrary{positioning, arrows.meta}

\begin{document}

\begin{tikzpicture}[
    node distance=2.5cm,
    arrow/.style={->, >=Stealth, thick},
    box/.style={draw, rectangle, rounded corners, minimum width=2cm, minimum height=1cm, align=center}
    ]

    % Nodes
    \node[box] (S) {Susceptible};
    \node[box, right=of S] (I) {Infectious};
    \node[box, right=of I] (R) {Recovered};

    % Arrows
    \draw[arrow] (S) -- node[above]{$\beta$} (I);
    \draw[arrow] (I) -- node[above]{$\gamma$} (R);

    % My Naive Attempt
    % \node (A) [above=0.5cm of I] {$\delta$};
    % \draw[arrow] (R.north) |- (A.south) -| (S.north);

    % Sandy G's code
    \draw[arrow] (R.north) -- ++(0,.5) -| (S.north) node[above, pos=0.25] {$\delta$};
        
\end{tikzpicture}

\end{document}

Связанный контент