Zeichnen eines Pfeils in einem SIRS-Diagramm mit TikZ

Zeichnen eines Pfeils in einem SIRS-Diagramm mit TikZ

Ich versuche, ein SIRS-Diagramm (Susceptible-Infectious-Recovered-Susceptible) zu erstellen, das wie folgt aussieht: Bildbeschreibung hier eingeben

Ich bin fast am Ziel. Bis auf den oberen Pfeil geht alles von „Genesen“ zu „Anfällig“. Hier ist mein aktueller Code:

\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}

Und hier ist, was mein Code erzeugt: Bildbeschreibung hier eingeben

Ich habe Probleme, den Pfeil von „Genesen“ zu „Anfällig“ zu zeichnen. Wie zeichne ich einen Pfeil, der über die Kästchen verläuft, ohne sie zu überlappen? Für jede Hilfe wäre ich sehr dankbar.

Antwort1

Hier war mein ursprünglicher naiver Versuch:

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

Der Benutzer Sandy G schlägt eine bessere Option vor, nämlich die Verwendung einer Technik, die überraschend schwer zu recherchieren war (googeln --++ist schwierig); ich habe diesen ALTEN (11 Jahre alten) Beitrag gefunden, in dem es darum geht:TiKz Strich Strich Plus Plus was mich zum TikZ-Handbuchabschnitt führte13.4 Relative und inkrementelle Koordinaten

Wir können eine relative Koordinate angeben, indem wir ++sie vor einer neuen Pfadkoordinate verwenden, um sie relativ zur Koordinate zu machen, die im Pfad davor stand. Aus dem Handbuch:

Sie können Koordinaten mit ++ voranstellen, um sie „relativ“ zu machen. Eine Koordinate wie ++(1cm,0pt) bedeutet „1cm rechts von der vorherigen Position, was dies zur neuen aktuellen Position macht“. Relative Koordinaten sind oft in „lokalen“ Kontexten nützlich:

So einfach geht's:

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

Dadurch wird ein Knoten vom Norden des Knotens R 0,5 nach oben gezeichnet, dann mit dem Norden von S verbunden, aber eine scharfe Kurve genommen, um dorthin zu gelangen (angegeben durch -|). Ein Knoten wird 0,25 über dem Pfad platziert (der zufällig symmetrisch ist) und mit gefüllt $\delta$.

MWE

Beide Antworten ergeben ungefähr das gleiche Bild, aber ich dachte, es würde Ihnen gefallen, verschiedene Perspektiven kennenzulernen.

MWE:

\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}

verwandte Informationen