[Tex/LaTex] Multiples arrow branching out from a node to different nodes

arrowsbranchingtikz-arrowstikz-pgf

I'm trying to draw a diagram, as depicted in the picture below,

enter image description here

May I know, how can I draw multiple arrows branching out nicely from a node to many different nodes as shown above? The arrows I've drawn will directly point towards the box hence, cutting through some of the nodes. How can I make them bend 90 degrees before connecting to the left side of each node.

MWE:

\documentclass[11pt,a4paper]{article}
\usepackage{tikz}
\usepackage{varwidth}
\usetikzlibrary{shapes.geometric, arrows}
\begin{document}
    \begin{tikzpicture}[node distance=2cm]

    \tikzstyle{Goal} = [rectangle, rounded corners, minimum width=3cm, minimum height=3cm,text centered, draw=black, fill=white]

    \tikzstyle{Inventory Analysis} = [rectangle, rounded corners, minimum width=3cm, minimum height=3cm,text centered, draw=black, fill=white]

    \tikzstyle{Impact Assessment} = [rectangle, rounded corners, minimum width=3cm, minimum height=3cm,text centered, draw=black, fill=white]

    \tikzstyle{Interpretation} = [rectangle, rounded corners, minimum width=3cm, minimum height=3cm,text centered, draw=black, fill=white]

    \tikzstyle{inputs} = [rectangle, rounded corners, minimum width=8cm, minimum height=1cm,text centered, draw=black, fill=white]

    \tikzstyle{arrow} = [thick,->,>=stealth]

    \node (goal) [Goal,align=center] {\begin{varwidth}{5em}Goal \& Scope Definition\end{varwidth}};

    \node (Inventory) [Inventory Analysis, below of=goal, yshift=-4cm, align=center] {\begin{varwidth}{5em}Inventory Analysis\end{varwidth}};

    \node (Impact Assessment) [Impact Assessment, below of=Inventory, yshift=-4cm,align=center] {\begin{varwidth}{5em}Impact\\Assessment\end{varwidth}};

    \node (Interpretation) [Interpretation, below of=Impact Assessment,yshift=-2cm,align=center] {\begin{varwidth}{5em}Interpretation\end{varwidth}};

    \node (inputs) [inputs, right of=goal, xshift=5cm, yshift=2cm] {System Boundary - Cradle-to-grave};

    \node (inputs1) [inputs, below of=inputs, yshift=0.7cm] {Functional Unit - 1$m^2$ Gross Floor Area};

    \node (inputs2) [inputs,below of= inputs1, yshift=0.7cm] {Building Lifespan - 50 years};

    \node (inputs3) [inputs,below of= inputs2, yshift=0.7cm] {Building materials data};

    \node (inputs4) [inputs,below of= inputs3, yshift=0.7cm] {Transportation data};

    \node (inputs5) [inputs,below of= inputs4, yshift=0.7cm] {Construction data};

    \node (inputs6) [inputs,below of= inputs5, yshift=0.7cm] {Operational data};

    \node (inputs7) [inputs,below of= inputs6, yshift=0.7cm] {Maintenance data};

    \node (inputs8) [inputs,below of= inputs7, yshift=0.7cm] {End-of-life data};
    \node (inputs9) [inputs,below of= inputs8, yshift=-1.2cm] {CML2 Baseline 2000 for midpoint indicator};
    \node (inputs10) [inputs,below of= inputs9, yshift=-1.1cm] {\begin{varwidth}{20em}Sensitivity analysis for transportation distance and data quality\end{varwidth}};
    \node (inputs11) [inputs,below of= inputs10, yshift=0.7cm] {\begin{varwidth}{20em}Data validation by comparing results with literatures and local industry practice recommendations\end{varwidth}};
    \node (inputs11) [inputs,below of= inputs11, yshift=0.7cm] {\begin{varwidth}{20em}Recommendations and conclusions\end{varwidth}};

    \draw [arrow] (goal) -- (Inventory);
    \draw [arrow] (goal) -- (inputs);
    \draw [arrow] (goal) -- (inputs1);
    \draw [arrow] (goal) -- (inputs2);
    \draw [arrow] (Inventory) -- (inputs3);
    \draw [arrow] (Inventory) -- (inputs4);
    \draw [arrow] (Inventory) -- (Impact Assessment);
    \draw [arrow] (Impact Assessment) -- (Interpretation);
    \end{tikzpicture}
\end{document}

Best Answer

Like this?

enter image description here

The main question was how to make multiple joins to other nodes from a single point. The syntax used was:

    \draw [arrow] (goal.east) --++(0:5mm)|- (inputs);

This means, draw a 5mm long horizontal line from goal.east to the right and from this point start a vertical+horizontal path to inputs center stopping at inputs border.

Some other changes applied to the original code:

  • replaced use of varwidth package by text width option.
  • replaced tikzstyle by tikzset: see Should \tikzset or \tikzstyle be used to define TikZ styles?
  • replaced old right of syntax by new right = of from positioning library
  • build the figure from right to left. Right nodes have been placed before left ones to simplify alignment.

The complete code is:

\documentclass[11pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows}

\begin{document}
    \begin{tikzpicture}[node distance=3mm,
    Goal/.style={
        rectangle, rounded corners, minimum width=3cm, 
        minimum height=3cm, text width=2.5cm, 
        align=center, draw=black,   fill=white
    },
    inputs/.style={
        rectangle, rounded corners, minimum width=8cm, 
        minimum height=1cm, text width=7.5cm,
        align=center, draw=black, fill=white
    },
    arrow/.style={thick,->,>=stealth}
]

    \node (inputs) [inputs] {System Boundary - Cradle-to-grave};

    \node (inputs1) [inputs, below = of inputs] {Functional Unit - 1$m^2$ Gross Floor Area};

    \node (inputs2) [inputs, below = of inputs1] {Building Lifespan - 50 years};

    \node (inputs3) [inputs, below = 1cm of inputs2] {Building materials data};

    \node (inputs4) [inputs, below = of inputs3] {Transportation data};

    \node (inputs5) [inputs, below = of inputs4] {Construction data};

    \node (inputs6) [inputs, below = of inputs5] {Operational data};

    \node (inputs7) [inputs, below = of inputs6] {Maintenance data};

    \node (inputs8) [inputs, below = of inputs7] {End-of-life data};

    \node (inputs9) [inputs, below = 1cm of inputs8] {CML2 Baseline 2000 for midpoint indicator};

    \node (inputs10) [inputs, below = 1cm of inputs9] {Sensitivity analysis for transportation distance and data quality};

    \node (inputs11) [inputs, below = of inputs10] {Data validation by comparing results with literatures and local industry practice recommendations};

    \node (inputs12) [inputs, below = of inputs11] {Recommendations and conclusions};

    \node (goal) [Goal, left=1cm of inputs1] {Goal \& Scope Definition};
%
    \path (inputs5.west)-- coordinate (aux) (inputs6.west);
   \node (Inventory) [Goal, left = 1cm of aux] {Inventory Analysis};

    \node (Impact Assessment) [Goal, left=1cm of inputs9] {Impact\\Assessment};

    \node (Interpretation) [Goal, left=1cm of inputs11] {Interpretation};

    \draw [arrow] (goal) -- (Inventory);
    \draw [arrow] (Inventory) -- (Impact Assessment);
    \draw [arrow] (Impact Assessment) -- (Interpretation);

    \draw [arrow] (goal.east) --++(0:5mm)|- (inputs);
    \draw [arrow] (goal.east) --++(0:5mm)|- (inputs1);
    \draw [arrow] (goal.east) --++(0:5mm)|- (inputs2);

    \foreach \i in {3,...,8}
        \draw [arrow] (Inventory.east) --++(0:5mm)|- (inputs\i);

    \draw [arrow] (Impact Assessment.east) --++(0:5mm)|- (inputs9);

    \foreach \i in {10,11,12}
        \draw [arrow] (Interpretation.east) --++(0:5mm)|- (inputs\i);

    \end{tikzpicture}
\end{document}
Related Question