我想画这个方案
所以我写了这个代码
\begin{tikzpicture}[
every node/.style = {shape=rectangle, rounded corners,
draw, font=\small, align=center, fill=white},
level 1/.style = {sibling distance = 10em},% <-- new
level 2/.style = {sibling distance = 9em},% <-- new
level 3/.style = {sibling distance = 8em},% <-- new
level 4/.style = {sibling distance = 8em},% <-- new
]
\node {Estabilidade de Sistemas\\Elétricos de Potência}
[edge from parent fork down]
child {node {Estabilidade do\\Ângulo do Rotor}
child {node {Estabilidade Angular\\a Pequenos Distúrbios}}
child {node {Estabilidade\\Transitória}
child {node {Curto Prazo}}}}
child {node{Estabilidade de\\Frequência}
child{node{Curto Prazo}}
child{node{Longo Prazo}}}
child {node{Estabilidade\\de Tensão}
child {node{Estabilidade de\\Tensão a Grandes\\Perturbações}
child {node{Curto Prazo}}}
child {node {Estabilidade de\\Tensão a Pequenas\\Perturbações}
child {node{Longo Prazo}}}};
\end{tikzpicture}
但我明白了
我不知道如何让两个节点具有相同的子节点并产生正确的垂直间距。
请帮我!
答案1
这不是一个完美的解决方案。用于missing
child
“使”两个节点具有相同的子节点。
\documentclass[border=3mm]{standalone}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}[
every node/.style = {shape=rectangle, rounded corners,
draw, font=\small, align=center, fill=white},
level 1/.style = {sibling distance = 10em},% <-- new
level 2/.style = {sibling distance = 9em},% <-- new
level 3/.style = {sibling distance = 8em},% <-- new
level 4/.style = {sibling distance = 8em},% <-- new
]
\node {Estabilidade de Sistemas\\Elétricos de Potência}
[edge from parent fork down]
child {node {Estabilidade do\\Ângulo do Rotor}
child {node {Estabilidade Angular\\a Pequenos Distúrbios}
child[missing] child{}}
child {node {Estabilidade\\Transitória}
child {node[xshift=-3.6mm] {Curto Prazo}}child[missing]}}
child {node{Estabilidade de\\Frequência}
child{child{
child{node{Curto Prazo}}
child{node{Longo Prazo}}}}}
child {node{Estabilidade\\de Tensão}
child {node{Estabilidade de\\Tensão a Grandes\\Perturbações}
child[missing] child[missing] child {node{Curto Prazo}}}
child {node {Estabilidade de\\Tensão a Pequenas\\Perturbações}
child {node{Longo Prazo}}child[missing] child[missing]
}};
\end{tikzpicture}
\end{document}
答案2
\documentclass[border=12pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
for tree={align=c,draw,rounded corners, tier/.option=level, anchor=base, l sep'+=10pt},
forked edges,
before typesetting nodes={
where content={}{phantom}{}
},
before drawing tree={
where n children=0{
if={>O{!u.phantom}}{
tikz+={\draw (!up.parent anchor) -- +(0pt,-\foresteoption{fork sep}) -| (.child anchor) (!un.parent anchor) -- +(0pt,-\foresteoption{fork sep}) -| (.child anchor);}
}{}
}{}
},
[Estabilidade de Sistemas\\Elétricos de Potência
[Estabilidade do\\Ângulo do Rotor
[Estabilidade Angular\\a Pequenos Distúrbios[]]
[
[Curto Prazo]
]
[Estabilidade\\Transitória[]]
]
[Estabilidade de\\Frequência
[\strut\\\strut\\\strut, draw=none, child anchor/.option=parent anchor
[Curto Prazo]
[Longo Prazo]
]
]
[Estabilidade\\de Tensão
[Estabilidade de\\Tensão a Grandes\\Perturbações[]]
[
[Curto Prazo]
[Longo Prazo]
]
[Estabilidade de\\Tensão a Pequenas\\Perturbações[]]
]
]
\end{forest}
\end{document}