Criar diagrama usando xymatrix

Criar diagrama usando xymatrix

Estou tentando reproduzir o diagrama abaixo usando o pacote xymatrix: insira a descrição da imagem aqui

Isto é o que eu fiz até agora:

\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}

O que me dá isso: insira a descrição da imagem aqui

Como posso reproduzir usando o pacote xymatrix a seta entre o passo 2 e 3 e entre o passo 6 e 7, para que ela gire e não passe pelos outros passos?

Além disso, como posso “agrupar” cada coluna em um quadro, como está no diagrama original?

Responder1

Eu sei que você disse que só quer soluções xymatrix, mas sou um partidário do tikz e só percebi que você disse isso depois que fiz isso.

\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}  

insira a descrição da imagem aqui

Responder2

O melhor que consegui usando crases é

\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}

insira a descrição da imagem aqui

Tentei obter os quadros adicionando setas sem cabeça ( \ar@{-}) deslocadas das entradas de matriz apropriadas, mas não consegui descobrir a sintaxe do deslocamento. Suponho que você poderia usar o truque "introduzir colunas extras" para colocar os cantos do quadro nas entradas da matriz, mas agora você está adicionando duas linhas e seis colunas à matriz, o que começa a parecer excessivo.

informação relacionada