I have update the example code with some of the comments to get really close to what I want. Now I just want two lines coming out of filter 1 and filter 2 inline and with the same line style as already there for the smaller blocks. I assume this should be relatively easy but I can only figure out how to get the lines out of the center of the block.
\makeatletter
\tikzset{west above/.code=\tikz@lib@place@handle@{#1}{south west}{0}{1}{north west}{1}}
\tikzset{west below/.code=\tikz@lib@place@handle@{#1}{north west}{0}{-1}{south west}{1}}
\tikzset{east above/.code=\tikz@lib@place@handle@{#1}{south east}{0}{1}{north east}{1}}
\tikzset{east below/.code=\tikz@lib@place@handle@{#1}{north east}{0}{-1}{south east}{1}}
\makeatother
\fontsize{8pt}{9pt}\selectfont
\begin{tikzpicture}[
every node/.style={
rectangle,
rounded corners,
% fill=black!10,
draw=black, very thick,
minimum height=2em,
inner sep=2pt,
text centered,
align=center
},
big node/.style={text width=8cm},
small node/.style={text width=3.5cm},
>=latex, %Make the arrow tips latex
myline/.style={draw, very thick,black, <-, node distance=1.1cm},
mylinedot/.style={draw, very thick, blue!100!black!70, densely dotted, <-, node distance=1cm},
shorter/.style={shorten <=1mm,shorten >=0.5mm},
node distance=0.75cm,
|*/.style={to path=(\tikztostart.south) -- (\tikztostart.south|-\tikztotarget.north)},
*|/.style={to path=(\tikztostart.south-|\tikztotarget.north) -- (\tikztotarget.north)}
]
\begin{scope}[every node/.append style={big node}]
\node (B) {\textbf{Filter process 1}};
\node[below=of B] (C) {\textbf{Filter process 2}};
\node[below=of C] (D) {\textbf{Filter process 3}};
\end{scope}
\begin{scope}[every node/.append style={small node}]
\node[west above=of B] (A1) {\textsc{Training Waveform}};
\node[east above=of B] (A2) {\textsc{Testing Waveform}};
\node[west below=of D] (E1) {\textbf{Reduced Model}};
\node[east below=of D] (E2) {\textbf{Full Model}};
\end{scope}
% \path (A1) -- node[F5 node] {F5} (A2);
\path[myline,->,shorter] {[|*] (A1) edge (B)}
(B) edge (C)
(C) edge (D)
{[*|] (D) edge (E1)}
;
\path[mylinedot,->,shorter] {[|*] (A2) edge (B) }
{[*|] (D) edge (E2)}
(E1) edge (E2)
;
\end{tikzpicture}
This is the final solution but I get a miscellaneous arrow that I am not sure how to get rid of. All I did was change to the two path lines below from the above code with no other changes.
Code is here:
\path[myline,->,shorter] {[|*] (A1) edge (B)}
([shift={(-2.25cm,0)}]B.south) edge ([shift={(-2.25cm,0)}]C.north)
([shift={(-2.25cm,0)}]C.south) edge ([shift={(-2.25cm,0)}]D.north)
{[*|] (D) edge (E1)}
;
\path[mylinedot,->,shorter] {[|*] (A2) edge (B) }
([shift={(2.25cm,0)}]B.south) edge ([shift={(2.25cm,0)}]C.north)
([shift={(2.25cm,0)}]C.south) edge ([shift={(2.25cm,0)}]D.north)
{[*|] (D) edge (E2)}
(E1) edge (E2)
;
Best Answer
Is this what you seek? Basically the in/out angle options for
edge [in=..., out=...]
are removed and the connected lines/pathes between blocks are not centered, but moved aside, so that train path and test path are clearly seen.Code:
Updated: The OP has an updated version. Actually, the answer addressed above still covers the new post's need. By using the
shift={(x,y)}
skill, the expected result is achievable.