TIKZ - changing one block into parallel multiple blocks
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
chains,
decorations.pathreplacing,
calligraphy,% has to be after decorations.pathreplacings
}
\usepackage{textcomp}
\usepackage{array}
\begin{document}
\begin{tikzpicture}[
node distance = 5mm and 7mm,
start chain = going below,
box/.style = {draw, fill=#1, minimum size=2em},
box/.default = white,
every edge/.style = {draw, -Latex},
BC/.style = {decorate,
decoration={calligraphic brace, amplitude=5pt,
raise=1mm},
very thick, pen colour=#1
}
]
\begin{scope}[every node/.append style={on chain}]
\node (N1) [box]
{\begin{tabular}{p{12mm} >{\tiny}c p{12mm}}
IOH & & \\
& $K\times K$ &
\end{tabular}};
\node (N2) [box=orange]
{\begin{tabular}{p{12mm} >{\tiny}c p{12mm}}
COI & & \\
& $K\times K$ &
\end{tabular}};
\node (N3) [box, node font=\bfseries] {A};
\end{scope}
\node (N4) [box,below=11mm of N3]
{\begin{tabular}{p{12mm} >{\tiny}c p{12mm}}
GOH & & \\
& $K\times K$ &
\end{tabular}};
\node (N3L) [box, node font=\bfseries, left=of N3] {A};
\node (N3R) [box, node font=\bfseries,right=of N3] {A};
%
\path (N1) edge (N2)
(N2) edge (N3)
(N2) edge (N3L.north)
(N2) edge (N3R.north);
\draw[BC] (N3R.south east) -- node (aux) [below=2mm] {$N$} (N3L.south west);
\path[shorten >=1pt] (aux -| N3L) edge (N4)
(aux) edge (N4)
(aux -| N3R) edge (N4);
\draw[ultra thick, shorten <=1mm, shorten >=1mm, dotted]
(N3L) edge[-] (N3)
(N3R) edge[-] (N3);
\end{tikzpicture}
\end{document}
Note: from your MWE I remove all not used TikZ libraries and defined style and add arrows.meta
(for arrows head), and decorations.pathreplacing
and calligraphy
for brace under nodes with text "A".
This is a little variation on Zarko's excellent code.
Node's contents are defined as labels
instead of tabulars
. This way, node's size must be declared.
Positions are defined with positioning
library and no chains
are used.
Nodes in third row are declared with a matrix
node.
All edges are drawn using Zarko's code adapted to new names for third row nodes.
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
decorations.pathreplacing,
calligraphy,% had to be after lib. decorations.pathreplacings
matrix,
positioning
}
\usepackage{textcomp}
\begin{document}
\begin{tikzpicture}[
node distance = 5mm,
box/.style = {draw, fill=#1, minimum height=1cm, minimum width=4.5cm},
box/.default = white,
every edge/.style = {draw, -Latex},
BC/.style = {decorate,
decoration={calligraphic brace, amplitude=5pt,
raise=1mm},
very thick, pen colour=#1
}
]
\node (N1) [box, label={[anchor=north west]north west:IOH},
label={[anchor=south, font=\tiny]south:$K\times K$}]
{};
\node (N2) [box=orange, label={[anchor=north west]north west:COI},
label={[anchor=south, font=\tiny]south:$K\times K$},
below=of N1]
{};
\matrix (N3) [matrix of nodes, inner sep=0pt, nodes={minimum size=1cm, draw, anchor=center, node font=\bfseries, node contents=A}, nodes in empty cells, column sep=.5cm,
below=of N2]{&&\\};
\node (N4) [box, label={[anchor=north west]north west:GOH},
label={[anchor=south, font=\tiny]south:$K\times K$},
below=1cm of N3]
{};
\path (N1) edge (N2)
(N2) edge (N3-1-1.north)
(N2) edge (N3-1-2)
(N2) edge (N3-1-3.north);
\draw[BC] (N3.south east) -- node (aux) [below=2mm] {$N$} (N3.south west);
\path[shorten >=1pt] (aux -| N3-1-1) edge (N4)
(aux) edge (N4)
(aux -| N3-1-3) edge (N4);
\draw[ultra thick, shorten <=1mm, shorten >=1mm, dotted]
(N3-1-1) edge[-] (N3-1-2)
(N3-1-2) edge[-] (N3-1-3);
\end{tikzpicture}
\end{document}