我正在尝试编写流程图,并且快完成了,但我无法正确对齐节点。
假设我的流程图有 3 列:第一列的节点没问题,但我需要第二列和第三列的节点也对齐。
我的代码和我实际绘制的图片:
\begin{tikzpicture}[
node distance = 1cm, auto,
status/.style={rectangle, draw, fill=red!10, text width=2.5cm, align=center, rounded corners, minimum height=1cm},
acao/.style={regular polygon, regular polygon sides=6, draw, text width=2.5cm, align=center},
decision/.style={diamond, draw, fill=blue!20, text width=2.5cm, align=center, inner sep=0pt},
block/.style={rectangle, draw, text width=4.5cm, align=center, minimum height=1cm},
line/.style={draw, -latex'}
]
\node [status] (inicio) {Situação de Emergência};
\node [block, below=of inicio] (equipe) {Equipe de Radiografia};
\node [acao, below=of equipe] (planejamento) {Planejamento para controlar a Situação};
\node [decision, below=of planejamento] (decide) {Situação sob controle?};
\node [status, node distance = 2cm, right=of decide] (pode) {Situação Normal};
\node [block, node distance = 2cm, right=of pode] (SPR_ok) {Supervisor de Proteção Radiológica};
\node [block, below=of decide] (SPR_fu) {Supervisor de Proteção Radiológica};
\node [acao, node distance = 2cm, below=of SPR_fu] (planejamento2) {Planejamento para controlar a Situação};
\node [decision, node distance = 2cm, right=of planejamento2] (decide2) {Situação sob controle?};
\node [status, below=of decide2] (auth) {Autoridades Competentes};
\node [status, node distance = 3cm, right=of decide2] (cnen) {Comunicar a CNEN};
\path [line] (inicio) -- (equipe);
\path [line] (equipe) -- (planejamento);
\path [line] (planejamento) -- (decide);
\path [line] (decide) -- node [near start] {Sim} (pode);
\path [line] (decide) -- node [near start] {Não} (SPR_fu);
\path [line] (pode) -- (SPR_ok);
\path [line] (SPR_ok) -| (cnen);
\path [line] (SPR_fu) -- (planejamento2);
\path [line] (planejamento2) -- (decide2);
\path [line] (decide2) -- node [near start] {Sim} (cnen);
\path [line] (decide2) -- node [near start] {Não} (auth);
\path [line] (auth) -| (cnen);
\end{tikzpicture}
答案1
您可以使用matrix
来放置所有节点,然后画线。
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usetikzlibrary{matrix,shapes,arrows}
\begin{document}
\begin{tikzpicture}[
node distance = 1cm, auto,
status/.style={rectangle, draw, fill=red!10, text width=2.5cm, align=center, rounded corners, minimum height=1cm},
acao/.style={regular polygon, regular polygon sides=6, draw, text width=2.5cm, align=center},
decision/.style={diamond, draw, fill=blue!20, text width=2.5cm, align=center, inner sep=0pt},
block/.style={rectangle, draw, text width=4.5cm, align=center, minimum height=1cm},
line/.style={draw, -latex'}
]
\matrix[column sep=1cm, row sep=1cm]{
\node [status] (inicio) {Situação de Emergência}; & & \\
\node [block] (equipe) {Equipe de Radiografia}; & & \\
\node [acao] (planejamento) {Planejamento para controlar a Situação}; & & \\
\node [decision] (decide) {Situação sob controle?}; &
\node [status] (pode) {Situação Normal}; &
\node [block] (SPR_ok) {Supervisor de Proteção Radiológica}; \\
\node [block] (SPR_fu) {Supervisor de Proteção Radiológica}; & & \\
\node [acao] (planejamento2) {Planejamento para controlar a Situação}; &
\node [decision] (decide2) {Situação sob controle?}; &
\node [status] (cnen) {Comunicar a CNEN}; \\
& \node [status] (auth) {Autoridades Competentes}; & \\};
\path [line] (inicio) -- (equipe);
\path [line] (equipe) -- (planejamento);
\path [line] (planejamento) -- (decide);
\path [line] (decide) -- node [near start] {Sim} (pode);
\path [line] (decide) -- node [near start] {Não} (SPR_fu);
\path [line] (pode) -- (SPR_ok);
\path [line] (SPR_ok) -- (cnen);
\path [line] (SPR_fu) -- (planejamento2);
\path [line] (planejamento2) -- (decide2);
\path [line] (decide2) -- node [near start] {Sim} (cnen);
\path [line] (decide2) -- node [near start] {Não} (auth);
\path [line] (auth) -| (cnen);
\end{tikzpicture}
\end{document}