在 tikz 中使用链的奇怪图表
Weird diagrams using chains within tikz
我正在尝试使用 LaTeX 中的 tikz 包复制一些我使用 Microsoft Visio 制作的图表。基本图表相对容易构建,但是当要添加两个以上的节点时,它会变得非常棘手......我似乎找不到任何文档来证明我需要居中和对齐节点就像我在 Visio 中所做的那样。
这些是 MS Visio 图表:
但这就是我现在使用 Tikz 得到的:
这是一个最小的可重现示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}
\usetikzlibrary{shapes.geometric, arrows, chains}
%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=0.6cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{document}
%The "Remediação" diagram
\begin{tikzpicture}[node distance=1.5cm]
\node (principal) [main] {Remediação};
\coordinate[below of=principal] (a);
\begin{scope}[start chain=going right]
\node (rem-vuln-c-patch) [main, on chain, below of=principal, left of=a] {Remediação de Vulnerabilidade Normal com \textit{patch}};
\node (rem-vuln-c-c-patch) [main, on chain] {Remediação de Vulnerabilidade Crítica com \textit{patch}};
\node (rem-vuln-config) [main, on chain] {Remediação de Vulnerabilidade por má configuração};
\node (gest-vuln-s-patch) [main, on chain] {Gestão de Vulnerabilidade sem \textit{patch}};
\end{scope}
\node(gest-risco) [main, align=center, below of=rem-vuln-c-c-patch] {Gestão de Risco};
\draw [arrow] (principal) -| (rem-vuln-c-patch);
\draw [arrow] (principal) -| (rem-vuln-c-c-patch);
\draw [arrow] (principal) -| (rem-vuln-config);
\draw [arrow] (principal) -| (gest-vuln-s-patch);
\draw [arrow] (gest-vuln-s-patch) |- (gest-risco);
\draw [arrow] (gest-risco) -| (rem-vuln-c-patch);
\draw [arrow] (gest-risco) -- (rem-vuln-c-c-patch);
\end{tikzpicture}
% The "Balanço" diagram
\begin{tikzpicture}[node distance=1.5cm]
\node (principal) [main] {Balanço};
\coordinate[below of=principal] (a);
\begin{scope}[start chain=going right]
\node (lic-apr) [main, on chain, below of=principal, left of=a] {Lições aprendidas};
\node (reu-retro) [main, on chain] {Reunião de Retrospetiva};
\node (cri-rel-exec) [main, on chain] {Criação do relatório executivo};
\end{scope}
\draw [arrow] (principal) -| (lic-apr);
\draw [arrow] (principal) -| (reu-retro);
\draw [arrow] (principal) -| (cri-rel-exec);
\end{tikzpicture}
\end{document}
使用树可能比使用链更容易:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}
\usetikzlibrary{shapes.geometric, arrows, chains,positioning}
%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=2cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{document}
%The "Remediação" diagram
\begin{tikzpicture}[
level distance=3cm,
sibling distance=4cm,
edge from parent path={[thick,->](\tikzparentnode.south) -- ++(0,-1cm) -| (\tikzchildnode.north)}
]
\node[main,minimum height=0.6cm] (principal) {Remediação}
child { node[main] (rem-vuln-c-c-patch) {Remediação de Vulnerabilidade Crítica com \textit{patch}} }
child { node[main] (rem-vuln-c-patch) {Remediação de Vulnerabilidade Normal com \textit{patch}} }
child { node[main] (rem-vuln-config) {Remediação de Vulnerabilidade por má configuração} }
child { node[main] (gest-vuln-s-patch) {Gestão de Vulnerabilidade sem \textit{patch}} };
\node(gest-risco) [main, align=center, below=4.5cm of principal,minimum height=0.6cm] {Gestão de Risco};
\draw[->,thick] (gest-risco) -| (rem-vuln-c-c-patch);
\draw[->,thick] (gest-risco) -| (gest-vuln-s-patch);
\draw[->,thick] ([xshift=-1.0cm]gest-risco.north) -| ([xshift=1.8cm]rem-vuln-c-patch);
\end{tikzpicture}
\end{document}
我正在尝试使用 LaTeX 中的 tikz 包复制一些我使用 Microsoft Visio 制作的图表。基本图表相对容易构建,但是当要添加两个以上的节点时,它会变得非常棘手......我似乎找不到任何文档来证明我需要居中和对齐节点就像我在 Visio 中所做的那样。
这些是 MS Visio 图表:
但这就是我现在使用 Tikz 得到的:
这是一个最小的可重现示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}
\usetikzlibrary{shapes.geometric, arrows, chains}
%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=0.6cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{document}
%The "Remediação" diagram
\begin{tikzpicture}[node distance=1.5cm]
\node (principal) [main] {Remediação};
\coordinate[below of=principal] (a);
\begin{scope}[start chain=going right]
\node (rem-vuln-c-patch) [main, on chain, below of=principal, left of=a] {Remediação de Vulnerabilidade Normal com \textit{patch}};
\node (rem-vuln-c-c-patch) [main, on chain] {Remediação de Vulnerabilidade Crítica com \textit{patch}};
\node (rem-vuln-config) [main, on chain] {Remediação de Vulnerabilidade por má configuração};
\node (gest-vuln-s-patch) [main, on chain] {Gestão de Vulnerabilidade sem \textit{patch}};
\end{scope}
\node(gest-risco) [main, align=center, below of=rem-vuln-c-c-patch] {Gestão de Risco};
\draw [arrow] (principal) -| (rem-vuln-c-patch);
\draw [arrow] (principal) -| (rem-vuln-c-c-patch);
\draw [arrow] (principal) -| (rem-vuln-config);
\draw [arrow] (principal) -| (gest-vuln-s-patch);
\draw [arrow] (gest-vuln-s-patch) |- (gest-risco);
\draw [arrow] (gest-risco) -| (rem-vuln-c-patch);
\draw [arrow] (gest-risco) -- (rem-vuln-c-c-patch);
\end{tikzpicture}
% The "Balanço" diagram
\begin{tikzpicture}[node distance=1.5cm]
\node (principal) [main] {Balanço};
\coordinate[below of=principal] (a);
\begin{scope}[start chain=going right]
\node (lic-apr) [main, on chain, below of=principal, left of=a] {Lições aprendidas};
\node (reu-retro) [main, on chain] {Reunião de Retrospetiva};
\node (cri-rel-exec) [main, on chain] {Criação do relatório executivo};
\end{scope}
\draw [arrow] (principal) -| (lic-apr);
\draw [arrow] (principal) -| (reu-retro);
\draw [arrow] (principal) -| (cri-rel-exec);
\end{tikzpicture}
\end{document}
使用树可能比使用链更容易:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}
\usetikzlibrary{shapes.geometric, arrows, chains,positioning}
%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=2cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{document}
%The "Remediação" diagram
\begin{tikzpicture}[
level distance=3cm,
sibling distance=4cm,
edge from parent path={[thick,->](\tikzparentnode.south) -- ++(0,-1cm) -| (\tikzchildnode.north)}
]
\node[main,minimum height=0.6cm] (principal) {Remediação}
child { node[main] (rem-vuln-c-c-patch) {Remediação de Vulnerabilidade Crítica com \textit{patch}} }
child { node[main] (rem-vuln-c-patch) {Remediação de Vulnerabilidade Normal com \textit{patch}} }
child { node[main] (rem-vuln-config) {Remediação de Vulnerabilidade por má configuração} }
child { node[main] (gest-vuln-s-patch) {Gestão de Vulnerabilidade sem \textit{patch}} };
\node(gest-risco) [main, align=center, below=4.5cm of principal,minimum height=0.6cm] {Gestão de Risco};
\draw[->,thick] (gest-risco) -| (rem-vuln-c-c-patch);
\draw[->,thick] (gest-risco) -| (gest-vuln-s-patch);
\draw[->,thick] ([xshift=-1.0cm]gest-risco.north) -| ([xshift=1.8cm]rem-vuln-c-patch);
\end{tikzpicture}
\end{document}