Ich versuche, ein SIRS-Diagramm (Susceptible-Infectious-Recovered-Susceptible) zu erstellen, das wie folgt aussieht:
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:
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$
.
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}