Source: https://tex.stackexchange.com/questions/368482/one-horizontal-line-flow-chart?rq=1

Just found an excellent source on how to draw a simple (slightly fanciful) horizontal flowchart using LaTeX (TikZ).

The output is very neat:

The code is reproduced here (in case the original source gets deleted):

```
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
chains,
positioning,
shapes.geometric
}
% for fancy looks of data storages
\begin{document}
\begin{tikzpicture}[
node distance = 5mm and 7mm,
start chain = going right,
disc/.style = {shape=cylinder, draw, shape aspect=0.3,
shape border rotate=90,
text width=17mm, align=center, font=\linespread{0.8}\selectfont},
mdl/.style = {shape=ellipse, aspect=2.2, draw},
alg/.style = {draw, align=center, font=\linespread{0.8}\selectfont}
]
\begin{scope}[every node/.append style={on chain, join=by -Stealth}]
\node (n1) [disc] {Training\\ data};
\node (n2) [alg] {Learning\\ algorithm};
\node (n3) [mdl] {Model};
\node (n4) [disc] {Test\\ data};
\node (n3) [mdl] {Accuracy};
\end{scope}
\node[below=of n2] {Step 1: Training};
\node[below=of n4] {Step 2: Tresting};
\end{tikzpicture}
\end{document}
```

## Multiline Flow Chart

For flowcharts that exceed one line (and hence require a line break), the following Tikz code is very helpful! (Source: https://tex.stackexchange.com/questions/149602/drawing-flow-diagram-in-latex-using-tikz)

```
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,shapes.geometric}
\begin{document}
\begin{tikzpicture}[>=latex']
\tikzset{block/.style= {draw, rectangle, align=center,minimum width=2cm,minimum height=1cm},
rblock/.style={draw, shape=rectangle,rounded corners=1.5em,align=center,minimum width=2cm,minimum height=1cm},
input/.style={ % requires library shapes.geometric
draw,
trapezium,
trapezium left angle=60,
trapezium right angle=120,
minimum width=2cm,
align=center,
minimum height=1cm
},
}
\node [rblock] (start) {Start};
\node [block, right =2cm of start] (acquire) {Acquire Image};
\node [block, right =2cm of acquire] (rgb2gray) {RGB to Gray};
\node [block, right =2cm of rgb2gray] (otsu) {Localized OTSU \\ Thresholding};
\node [block, below right =2cm and -0.5cm of start] (gchannel) {Subtract the \\ Green Channel};
\node [block, right =2cm of gchannel] (closing) {Morphological \\ Closing};
\node [block, right =2cm of closing] (NN) {Sign Detection \\ Using NN};
\node [input, right =2cm of NN] (limit) {Speed \\ Limit};
\node [coordinate, below right =1cm and 1cm of otsu] (right) {}; %% Coordinate on right and middle
\node [coordinate,above left =1cm and 1cm of gchannel] (left) {}; %% Coordinate on left and middle
%% paths
\path[draw,->] (start) edge (acquire)
(acquire) edge (rgb2gray)
(rgb2gray) edge (otsu)
(otsu.east) -| (right) -- (left) |- (gchannel)
(gchannel) edge (closing)
(closing) edge (NN)
(NN) edge (limit)
;
\end{tikzpicture}
\end{document}
```

Output: