I'm trying to make a plot as shown here in Tikz, but the path originating from midway are overlapping, so how do I define the originating position of the path as shown below.
Code:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,shapes.geometric, positioning}
\pagestyle{empty}
\usetikzlibrary{positioning, shapes.geometric}
\tikzset{arrow_box/.style={single arrow, draw=black, minimum width = 30pt,very thick, single arrow head extend=3pt, text centered,minimum height=75mm},%minimum width=2cm, minimum height=1cm,
block_small/.style={rectangle, draw, text width=12em,very thick, text centered,rounded corners, minimum height=2.75em},
block_tiny/.style={rectangle, draw, text width=8em,very thick, text centered,rounded corners, minimum height=2.75em},
block_medium/.style={rectangle, draw, text width=19em,very thick, text centered,rounded corners, minimum height=2.75em},
block_med/.style={rectangle, draw, text width=15em,very thick, text centered,rounded corners, minimum height=2.75em},
block/.style={rectangle, draw, text width=12em,very thick, text centered,rounded corners, minimum height=2.75em},
arrow/.style={line width=0.75mm, ->,>=stealth}}
\begin{document}
\begin{tikzpicture}[node distance=1cm and 2cm]
% Nodes
\node (forcing) [arrow_box,fill=black!20] {Forcing Environmental Disturbance};
\node (receptivity) [block_medium, fill=black!10, below=0.5 of forcing] {Receptivity Mechanism};
\node (transient) [block_small, fill=black!10, below=0.5cm of receptivity] {Transient Growth};
\node (primary) [block_small, fill=black!10, below of=transient, xshift=-2cm, yshift=-0.5cm] {Primary Instability (Eigenmode Growth)};
\node (secondary) [block_med, fill=black!10, below of=primary, xshift=+0.5cm, yshift=-0.5cm] {Secondary Instability (Parametric $&$ Mode Interactions)};
\node (bypass) [block_tiny, fill=black!10, right of=secondary, xshift=+3.75cm] {Bypass Mechanism};
\node (breakdown) [block_small, fill=black!10, below of=secondary, xshift=+1.5cm, yshift=-0.5cm] {Breakdown};
\node (turbulence) [block_small, fill=black!10, below of=breakdown, yshift=-0.5cm] {Turbulence};
% path
\draw [arrow] (forcing) -- (receptivity);
\draw [arrow] (receptivity) -- (transient);
\draw [arrow] (receptivity.east) -- (bypass) node[pos=0.9,above]{$e$};
\draw [arrow] (receptivity.west) -- (primary) node[pos=0.9,above]{$a$};
\draw [arrow] (transient) -- (bypass) node[above right, pos=0.5,above]{$d$};
\draw [arrow] (transient) -- (primary) node[pos=0.9,above]{$b$};
\draw [arrow] (transient)--(secondary) node[below right, pos=0.9,above]{$c$};
\draw [arrow] (primary) -- (secondary);
\draw [arrow] (secondary.south)--(breakdown);
\draw [arrow] (bypass) -- (breakdown);
\draw [arrow] (breakdown) -- (turbulence);
\draw [arrow] (receptivity) edge node[above left, pos=0.5] {$a$} (primary);
%\path [arrow] (receptivity) -- ++(0,-1) -- +(-2,0) -- (primary) node[pos=0.3,right] {$p_{repl}$};
%\path [arrow] (receptivity) -- ++(0,-1) -| (primary) node [pos=0.8,left] {};
\end{tikzpicture}
\end{document}
Result :
In the result image, I get the path originating from the midway node, but they are overlapping with the other.
Some of the answers mention the usage of midway, but I am not quite sure how to implement that here. This answer here uses the swap, but that is to avoid the overlapping of path with the labels.



xshiftin combination with anchors for this. For example:\draw [arrow] ([xshift=-.5cm]receptivity.south) -- ([xshift=-.5cm]transient.north);– Jasper Habicht Jul 21 '22 at 11:22($(receptivity.south west)!0.5!(receptivity.south)$). – John Kormylo Jul 21 '22 at 14:12