驯服 TikZ 流程图的结构

驯服 TikZ 流程图的结构

在最终解决了该流程图的许多问题之后,我得到了这个......

我是 TikZ 新手,很难解决这个问题。我希望第 5 行的 5 个节点位于一个垂直排列的框内。我有很好的垂直空间,但我被限制在你看到的列中。顺便说一下,我使用的是 beamerposter。

不太好的 MWE

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,matrix}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
\scriptsize
\begin{tikzpicture}
[auto,
  block/.style={rectangle, draw=blue, thick, fill=blue!20,text width=10em, text centered, rounded corners,minimum height=4em},
  ratos/.style={rectangle, draw=blue, thick, fill=blue!20,text width=20em, text centered, rounded corners,minimum height=4em},
  line/.style={draw, thick, -latex,shorten >=2pt}]

\matrix [column sep=3mm,row sep=12mm, ampersand replacement=\tikzand]
  {
  % row 1
   \tikzand \node [ratos] (ratos){\textbf{Ratos}\\ 
      \begin{itemize}
        \item Filogeneticamente próximos do Homem
        \item Desenvolve a patologia rapidamente
        \item Manipulação fácil e baixo custo
      \end{itemize}}; \tikzand \\
  % row 2
    \node [block] (femea) {\textbf{Fêmea}\\ 
      \begin{itemize}
        \item Patologia do ovário
      \end{itemize}}; 
   \tikzand \node [block] (hibridos) {\textbf{Híbridos}\\ 
      \begin{itemize}
        \item Geneticamente iguais
      \end{itemize}
    }; 
   \tikzand \node [block] (suprimidos) {\textbf{Imunossuprimidos}\\
      \begin{itemize}
        \item Ratos \textit{nude}, sem timo -- sem rejeição de transplante e interferência imunitária
      \end{itemize}
    }; \\
  % row 3
     \tikzand \node [ratos] (metodo1){Inoculação intrabursal ortotópica de células da linhagem humana do carcinoma de células claras, não metastizantes, preferencialmente no infundíbulo}; \\
  % row 4
    \tikzand \node [block] (grupos){5 grupos de 6 ratos\\ }; \\
  % row 5
    \node [block] (grupo1){\textbf{Grupo 1}\\ Sem tratamento}; \tikzand
    \node [block] (grupo2){\textbf{Grupo 2}\\ Vorinostat \textit{pd} -- 50 mg/kg/dia}; 
    \node [block] (grupo3){\textbf{Grupo 3}\\ Células tratadas com vorinostat \textit{in vitro} antes da inoculação}; \tikzand
    \node [block] (grupo4){\textbf{Grupo 4}\\ Tratamento com fármaco de 1ª linha (paclixatel ou agentes de platina)}; \tikzand
    \node [block] (grupo5){\textbf{Grupo 5}\\ Tratamento com fármaco de 1ª linha e vorinostat}; \\
  % row 6
    \node [block] (duração){\textbf{11 semanas de duração}
      \begin{itemize}
        \item 6 semanas para desenvolvimento tumoral
        \item 5 semanas para se confirmar efeito terapêutico
      \end{itemize}
     }; \\
  % row 7
     \node [block] (eutanasia){Eutanásia de 2 ratos de cada grupo à 9ª, 10ª e 11ª semanas.
     };\\
  %row 8
      \node [block] (analise){Análise macroscópica.
    }; \tikzand
     \node [block] (citologia){Citologia com coloração PAS.
     };\\ 
   };      
\begin{scope}[every path/.style=line]
  \path(ratos)-- (femea);
  \path(ratos)-- (hibridos);
  \path(ratos)-- (suprimidos);
  \path(femea)-- (metodo1);
  \path(hibridos)-- (metodo1);
  \path(suprimidos)-- (metodo1);
  \path(metodo1)-- (grupos);
  \path(grupos)-- (grupo1);
  \path(grupos)-- (grupo2);
  \path(grupos)-- (grupo3);
  \path(grupos)-- (grupo4);
  \path(grupos)-- (grupo5);
  \path(grupo1)-- (duração);
  \path(grupo2)-- (duração);
  \path(grupo3)-- (duração);
  \path(grupo4)-- (duração);
  \path(grupo5)-- (duração);
  \path(duração)-- (eutanasia);
  \path(eutanasia)-- (analise);
  \path(eutanasia)-- (citologia);
\end{scope}
\end{tikzpicture}
\end{document}

有人能帮我解决这个问题吗?这是我为大学学生会议制作的海报。感谢您的时间!

答案1

这是我认为你想要的解决方案。我最小化了代码,只包括了你(不是最小化)示例中的第 4、5 和 6 行。此外,我添加了 tikzlibrarycalc来计算框角的位置。代码是

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,matrix,calc}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\begin{document}
\scriptsize

\begin{tikzpicture} [auto,
block/.style={rectangle, draw=blue, thick, text width=5em, text centered, rounded corners,minimum height=4em},
ratos/.style={rectangle, draw=blue, thick,text width=5em, text centered, rounded corners,minimum height=4em},
line/.style={draw, thick, -latex,shorten >=2pt}]

\matrix [column sep=3mm,row sep=6mm, ampersand replacement=\tikzand]
{ 
% row 4
\tikzand \node [block] (grupos){row 4}; \\
% row 5
\tikzand\tikzand\node [block] (grupo1){\textbf{Grupo 1}};\\
\tikzand\tikzand\node (grupo234) {$\vdots$};\\
\tikzand\tikzand\node [block] (grupo5){\textbf{Grupo 5}}; \\
% row 6
\tikzand\node [block] (dura){row 6}; \\    
};
\begin{scope}[every path/.style=line]

\path(grupos)|- (grupo1);
\path(grupos) |- (grupo234);
\path(grupos)|- (grupo5);
\path(grupo1) -- ++(2,0) |- (dura);
\path(grupo234) -- ++(2,0) |- (dura);
\path(grupo5) -- ++(2,0) |- (dura);

\end{scope}

\draw[red] ($(grupo1.north west) + 0.3*(-1.2,1)$) rectangle ($(grupo5.south east)+ 0.3*(1.2,-1)$);
\end{tikzpicture} 
\end{document} 

结果是

带有方框的图表

还有其他方法可以获得您想要的结果,但我认为这一种方法限制了您对现有代码所做的更改量。

相关内容