Diagrama de flujos en LaTeX

Visualization
Software
Author

Andrés Gutiérrez

Published

June 19, 2019

Un diagrama de flujo creado con la librería tikz

El gráfico que se aprecia corresponde a un diagrama que muestra la ruta para la revisión de algunas estadísticas provenientes de estudios por muestreo. Esta compuesto por elipses, bloques, líneas y flechas. En principio quise hacerlo con una herramienta amigable y utilicé LucidChart, pero no me gustó el resultado final, y al parecer la herramienta no es tan intuitiva. Al final me decidí por LaTeX y su librería tikz. El resultado es más prolijo y simple; y lo pude adaptar fácilmente al contenido principal en Rmarkdown. En principio, partí de esta plantilla que encontré en overleaf, al final le di vuelta y el resultado final es el que se muestra en el gráfico. El código que utilicé para crearlo fue el siguiente:

\documentclass[10pt]{article}

\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}

\begin{document}
\pagestyle{empty}

% Define block styles
\tikzstyle{block} = [rectangle, draw, node distance=2.5cm,
    text width=7em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{cloud} = [draw, ellipse, node distance=4cm,
    minimum height=1cm, text width=5.5em, text badly centered]

\begin{tikzpicture}[node distance = 2cm, auto]
    % Place nodes
    \node [cloud] (criterios) {Identificar criterios};
    \node [cloud, left of=criterios] (tabla) {Tabla de estimaciones inciales};
    \node [block, below of=criterios] (n) {Tamaño de muestra};
    \node [block, below of=n] (neff) {Tamaño de muestra efectivo};
    \node [cloud, right of=neff] (suprimir) {Suprimir};
    \node [block, below of=neff] (casos) {Número de casos};
    \node [block, below of=casos] (cve) {Coeficiente de variación};
    \node [block, below of=cve] (df) {Grados de libertad};
    \node [block, below of=df] (cvL) {Coeficiente de variación Logit};
    \node [cloud, left of=cvL] (publicar) {Publicar};
    \node [cloud, right of=cvL] (revisar) {Revisión};

    % Draw edges
    \path [line] (n) -- node {sí}(neff);
    \path [line] (neff) -- node {sí}(casos);
    \path [line] (casos) -- node {sí}(cve);
    \path [line] (cve) -- node {sí}(df);  
    \path [line] (df) -- node {sí}(cvL);    
    %\path [line] (casos) -| node [near start] {yes} (update);
    %\path [line] (update) |- (n);
    %\path [line] (casos) -- node {no}(stop);
    \path [line,dashed] (tabla) -- (criterios);
    \path [line,dashed] (criterios) -- (n);
    \path [line,dashed] (cvL) -- node {sí}(publicar);
    \path [line,dashed] (cvL) -- node {no}(revisar);
    \path [line,dashed] (df) -| node [near start]{no}(revisar);
    \path [line,dashed] (n) -| node [near start]{no}(suprimir);
    \path [line,dashed] (neff) -- node {no}(suprimir);
    \path [line,dashed] (casos) -| node [near start]{no}(suprimir);
    \path [line,dashed] (cve) -| node[near start] {no}(suprimir);
\end{tikzpicture}

\end{document}