Crear diagrama usando xymatrix

Crear diagrama usando xymatrix

Estoy intentando reproducir el siguiente diagrama usando el paquete xymatrix: ingrese la descripción de la imagen aquí

Esto es lo que he hecho hasta ahora:

\documentclass{article}

\usepackage[all]{xy}

\begin{document}

\xymatrix@C=1cm{
    % First row
    \txt{FASE I\\Planejamento da Revisão} & 
    \txt{FASE II\\Realização da Revisão} &
    \txt{FASE III\\Documentação da Revisão} &
    \\
    % Second row
    *++[F-,]\txt{1. Especificar questões da\\ pesquisa} \ar[d] & 
    *++[F-,]\txt{3. Identificar e selecionar\\ pesquisas} \ar[d] & 
    *++[F-,]\txt{7. Analisar resultados} \ar[d]
    \\
    % Third row
    *++[F-,]\txt{2. Desenvolver protocolo da\\ revisão questões da pesquisa} \ar[ur] &
    *++[F-,]\txt{4. Avaliar a qualidade dos\\ estudos} \ar[d] &
    *++[F-,]\txt{8. Elaborar relatório}
    \\
    % Fourth row
    & *++[F-,]\txt{5. Extrair dados} \ar[d] & 
    \\
    % Fifth row
    & *++[F-,]\txt{6. Sintetizar dados} \ar[uuur] & 
    \\
}

\end{document}

Lo que me da esto: ingrese la descripción de la imagen aquí

¿Cómo puedo reproducir usando el paquete xymatrix la flecha entre los pasos 2 y 3 y entre los pasos 6 y 7, para que gire y no pase por los otros pasos?

Además, ¿cómo puedo "agrupar" cada columna en un marco, como está en el diagrama original?

Respuesta1

Sé que dijiste que solo quieres soluciones xymatrix, pero soy partidario de tikz y solo me di cuenta de que dijiste eso después de que hice esto.

\documentclass{article}
\usepackage{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{calc}
\usetikzlibrary{fit}

\begin{document}

\begin{tikzpicture}
\matrix (m) [
    matrix of nodes,
    row sep=0.4cm,
    column sep=1cm,
    % Set the size of the text boxes to be 4cm x 15pt
    every node/.style={text width=4cm, text depth=15pt},
    every node/.append code={ 
       % Check whether we're on the top row
       \ifnum\pgfmatrixcurrentrow=1\relax
          % Top row: align  center and don't draw rectangles
          \pgfkeysalso{align=center}
       \else
          % other rows: align left and "draw" the rectangles
          \pgfkeysalso{align=left,draw}
       \fi
    }
]{
% First row
% Need braces in order to use \\ as an explicit linebreak
{FASE I \\ Planejamento da Revisão} &
{FASE II\\ Realização da Revisão} &
{FASE III\\ Documentação da Revisão} \\
% Second row
1. Especificar questões da pesquisa &
3. Identificar e selecionar pesquisas &
7. Analisar resultados\\
% Third row
2. Desenvolver protocolo da revisãoa&
4. Avaliar a qualidade dos estudos&
8. Elaborar relatório\\
% Fourth row
& {5. Extrair dados}  &
\\
% Fifth row
% I need to force tikz to create empty nodes for fitting later
% But we don't want it to make empty rectangles, hence |[draw=none]|
|[draw=none]|& {6. Sintetizar dados} & |[draw=none]| 
\\};

\draw[->] (m-2-1) -- (m-3-1);
% Make the first zigzag path
\draw[->] (m-3-1.south)  -- ++(0,-0.5)
                   -| ($(m-2-2.west) - (0.5,0)$)
                   -- (m-2-2.west);
\draw[->] (m-2-2) -- (m-3-2);
\draw[->] (m-3-2) -- (m-4-2);
\draw[->] (m-4-2) -- (m-5-2);

% Make the second zigzag path
\draw[->] (m-5-2.east)  -- ++(0.5,0)
                   |- (m-2-3.west);

\draw[->] (m-2-3) -- (m-3-3);

% Draw the three "fit" rectangles
\node[rectangle,draw,fit=(m-1-1)(m-5-1)]{}; 
\node[rectangle,draw,fit=(m-1-2)(m-5-2)]{};
\node[rectangle,draw,fit=(m-1-3)(m-5-3)]{};

\end{tikzpicture}
\end{document}  

ingrese la descripción de la imagen aquí

Respuesta2

Lo mejor que he podido conseguir usando comillas invertidas es

\documentclass{article}

\usepackage[all]{xy}

\begin{document}

\xymatrix{
    % First row
    \txt{FASE I\\Planejamento da Revisão}
    \ar[d]
     & &
    \txt{FASE II\\Realização da Revisão} & &
    \txt{FASE III\\Documentação da Revisão} & &
    \\
    % Second row
    *++[F-,]\txt{1. Especificar questões da\\ pesquisa} \ar[d] & &
    *++[F-,]\txt{3. Identificar e selecionar\\ pesquisas} \ar[d] & &
    *++[F-,]\txt{7. Analisar resultados} \ar[d]
    \\
    % Third row
    *++[F-,]\txt{2. Desenvolver protocolo da\\ revisão questões da pesquisa}
    \ar`d[dr]`[ur]`[urr][urr] % \ar[ur]
     & &
    *++[F-,]\txt{4. Avaliar a qualidade dos\\ estudos} \ar[d] & &
    *++[F-,]\txt{8. Elaborar relatório}
    \\
    % Fourth row
    & & *++[F-,]\txt{5. Extrair dados} \ar[d] & &
    \\
    % Fifth row
    & & *++[F-,]\txt{6. Sintetizar dados}
    \ar`r[ruuu]`[rruuu][rruuu] % \ar[uuur]
    & &
}

\end{document}

ingrese la descripción de la imagen aquí

Intenté obtener los marcos agregando flechas sin cabeza ( \ar@{-}) desplazadas de las entradas de la matriz apropiadas, pero no pude entender la sintaxis de desplazamiento. Supongo que podrías usar el truco de "introducir columnas adicionales" para tener las esquinas del marco en las entradas de la matriz, pero ahora estás agregando dos filas y seis columnas a la matriz, lo que empieza a parecer excesivo.

información relacionada