I am working on a diagram for my thesis; I extract data from a simulation (left column), compute it in some way (center column) and get a result (right column) which is the input for another code, so my diagram is basically a flow diagram of this process. This is the source code of the diagram so far:
\documentclass[a4paper,english]{article}
\usepackage{mathtools}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\begin{document}
\begin{tikzpicture}
[align=center,node distance=2.5cm]
\node[draw, rectangle] (a) {$a_{\text{g}}$};
\nodedraw, rectangle, right of=a {$\rho_{\text{g}} \cdot a_{\text{g}}^3$};
\nodedraw, rectangle, right of=b {$m_{\text{g,s}}$};
\node[draw, rectangle, below of=a] (d) {$\rho_{\text{g}}$};
\nodedraw, rectangle, below of=b {SFR};
\nodedraw, rectangle, above of=f {$h_{\text{g,s}}$};
\node[draw, rectangle, below of=d] (g) {$f_{\text{H}2}_{\text{g}}$};
\nodedraw, rectangle, below of=e {nH};
\nodedraw, rectangle, below of=f {$\dot{M}{\text{g,s}}$};
\node[draw, rectangle, below of=g] (j) {$P{\text{g}}$};
\nodedraw, rectangle, below of=h {T*};
\nodedraw, rectangle, below of=i {$\text{nH}{\text{g,s}}$};
\node[below of=j] (m) {};
\nodedraw, rectangle, below of=k {$f\{\text{H}2}{\text{g}} / 0.76$};
\nodedraw, rectangle, below of=l {$T{\text{g,s}}$};
\node[draw, rectangle, below of=m] (p) {$Z_{\text{g}}$};
\nodedraw, rectangle, below of=n {$Z_{\text{g}}/Z_\odot$};
\nodedraw, rectangle, below of=o {$f_\text{H}2_{\text{g,s}}$};
\node[below of=p] (s) {};
\nodedraw, rectangle, below of=q {$a_x_\odot \cdot \frac{Z_{\text{g}}}{Z_\odot}$};
\nodedraw, rectangle, below of=r {$Z_{\text{g,s}}$};
\node[draw, rectangle, below of=s] (bb) {$\vec{x}{\text{g}}$};
\nodedraw, rectangle, below of=t {$(\vec{x}{\text{g}} - \vec{r}{\text{center}}) \cdot 12,000 , \si{\kilo pc}$};
\nodedraw, rectangle, below of=u {$a_x{\text{g,s}}$};
\nodedraw, rectangle, below of=w {$\vec{x}{\text{g,s}}$};
\node[draw, rectangle, below of=bb] (cc) {$v{\text{g}}$};
\nodedraw, rectangle, below of=y {$v_{\text{g,s}}$};
\node[above of=a] (empty1) {};
\node[above of=b] (empty2) {};
\noderectangle, above of=empty1 {Simulation Data};
\noderectangle, above of=empty2 {Conversion};
\noderectangle, above of=c {Input};
\draw[-{Latex[scale=2.0]}] (a) -- (b);
\draw[-{Latex[scale=2.0]}] (a) -- (c);
\draw[-{Latex[scale=2.0]}] (b) -- (f);
\draw[-{Latex[scale=2.0]}] (d) -- (b);
\draw[-{Latex[scale=2.0]}] (d) -- (e);
\draw[-{Latex[scale=2.0]}] (e) -- (i);
\draw[-{Latex[scale=2.0]}] (d) -- (h);
\draw[-{Latex[scale=2.0]}] (h) -- (l);
\draw[-{Latex[scale=2.0]}] (g) -- (e);
\draw[-{Latex[scale=2.0]}] (g) -- (h);
\draw[-{Latex[scale=2.0]}] (g) -- (n);
\draw[-{Latex[scale=2.0]}] (l) -- (e);
\draw[-{Latex[scale=2.0]}] (l) -- (k);
\draw[-{Latex[scale=2.0]}] (j) -- (k);
\draw[-{Latex[scale=2.0]}] (k) -- (o);
\draw[-{Latex[scale=2.0]}] (n) -- (r);
\draw[-{Latex[scale=2.0]}] (p) -- (q);
\draw[-{Latex[scale=2.0]}] (q) -- (u);
\draw[-{Latex[scale=2.0]}] (p) -- (t);
\draw[-{Latex[scale=2.0]}] (t) -- (w);
\draw[-{Latex[scale=2.0]}] (bb) -- (v);
\draw[-{Latex[scale=2.0]}] (v) -- (y);
\draw[-{Latex[scale=2.0]}] (cc) -- (aa);
\end{tikzpicture}
\end{document}
This results in the following diagram:
I have the following issues with this: I dislike the positioning of the rectangles. Their vertical distance is too high and they should use the whole horizontal size of the page. Maybe it would also look better if each column used a left alignment, so the left side of each rectangle begins at the same x-coordinate. How can I achieve this?
Thanks in advance for your answer.
e: Thanks to marmot for suggesting matrices, I have the following code now:
\begin{center}
\captionof{figure}{Diagram for showing the process of converting the gas simulation data to input for SÍGAME}
\label{dia:conversion-diagram}
\begin{tikzpicture}[auto, block-center/.style ={rectangle, draw=black, thick, fill=white, text centered}]
\matrix [column sep=10mm,row sep=4mm] {
\nodeblock-center {Simulation Data};
& \nodeblock-center {Conversion};
& \nodeblock-center {Input}; \
\node[block-center] (a) {$a_{\text{g}}$};
& & \nodeblock-center {$h_{\text{g,s}}$}; \
& \nodeblock-center {$\rho_{\text{g}} \cdot a_{\text{g}}^3$};
& \nodeblock-center {$m_{\text{g,s}}$}; \
\node[block-center] (d) {$\rho_{\text{g}}$};
& \nodeblock-center {SFR*};
& \nodeblock-center {$\dot{M}_{\text{g,s}}$}; \
\node[block-center] (g) {$f_{\text{H}2}{\text{g}}$};
& \nodeblock-center {nH*};
& \nodeblock-center {$\text{nH}{\text{g,s}}$}; \
\node[block-center] (j) {$P_{\text{g}}$};
& \nodeblock-center {T*};
& \nodeblock-center {$T_{\text{g,s}}$}; \
& \nodeblock-center {$f_{\text{H}2}{\text{g}} / 0.76$};
& \nodeblock-center {$f\\text{H}2_{\text{g,s}}$}; \
\node[block-center] (p) {$Z_{\text{g}}$};
& \nodeblock-center {$Z_{\text{g}}/Z_\odot$};
& \nodeblock-center {$Z_{\text{g,s}}$}; \
& \nodeblock-center {$a_x_\odot \cdot \frac{Z_{\text{g}}}{Z_\odot}$};
& \nodeblock-center {$a_x_{\text{g,s}}$}; \
\node[block-center] (bb) {$\vec{x}{\text{g}}$};
& \nodeblock-center {$(\vec{x}{\text{g}} - \vec{r}{\text{c,i}}) \cdot 12,000 , \si{\kilo pc} \cdot a{\text{exp}}$};
& \nodeblock-center {$\vec{x}_{\text{g,s}}$}; \
\node[block-center] (cc) {$v_{\text{g}}$};
& & \nodeblock-center {$v_{\text{g,s}}$};\
};
\draw[-{Latex[scale=1.5]}] (a) -- (b);
\draw[-{Latex[scale=1.5]}] (a) -- (c);
\draw[-{Latex[scale=1.5]}] (b) -- (f);
\draw[-{Latex[scale=1.5]}] (d) -- (b);
\draw[-{Latex[scale=1.5]}] (d) -- (e);
\draw[-{Latex[scale=1.5]}] (e) -- (i);
\draw[-{Latex[scale=1.5]}] (d) -- (h);
\draw[-{Latex[scale=1.5]}] (h) -- (l);
\draw[-{Latex[scale=1.5]}] (g) -- (e);
\draw[-{Latex[scale=1.5]}] (g) -- (h);
\draw[-{Latex[scale=1.5]}] (g) -- (n);
\draw[-{Latex[scale=1.5]}] (l) -- (e);
\draw[-{Latex[scale=1.5]}] (l) -- (k);
\draw[-{Latex[scale=1.5]}] (j) -- (k);
\draw[-{Latex[scale=1.5]}] (k) -- (o);
\draw[-{Latex[scale=1.5]}] (n) -- (r);
\draw[-{Latex[scale=1.5]}] (p) -- (q);
\draw[-{Latex[scale=1.5]}] (q) -- (u);
\draw[-{Latex[scale=1.5]}] (p) -- (t);
\draw[-{Latex[scale=1.5]}] (t) -- (w);
\draw[-{Latex[scale=1.5]}] (bb) -- (v);
\draw[-{Latex[scale=1.5]}] (v) -- (y);
\draw[-{Latex[scale=1.5]}] (cc) -- (aa);
\end{tikzpicture}
\end{center}
which produces the following picture:
This seems to be a lot more flexible and also already looks a whole lot better, thanks!




matrix of nodesfor that and adjust the column width or separation to your needs. – Aug 30 '18 at 14:19edgesmay allow you to cook down the amount of code needed to draw the arrows.) – Aug 30 '18 at 21:59