![跳过 tikz 树中的一代](https://linux22.com/image/384296/%E8%B7%B3%E8%BF%87%20tikz%20%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BB%A3.png)
\documentclass[tikz]{standalone}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture} [
grow cyclic,
level 1/.style={level distance=32mm, sibling angle=60},
level 2/.style={level distance=16mm, sibling angle=45},
level 3/.style={level distance=8mm, sibling angle=30},
]
% Root
\node (root) {[1] root}
% [2]
child foreach \name in {{[2] A},{[2] B},{[2] C}} {node {\name}}
% [3]
;
\node (2ndGenA) at(+135:48mm) {[3] D};
\node (2ndGenB) at(-135:48mm) {[3] E};
\draw (root) -- (2ndGenA);
\draw (root) -- (2ndGenB);
\draw[dashed] (0,0) circle [radius=32mm] circle [radius=48mm];
\end{tikzpicture}
\end{document}
是否可以使用 tikz 子符号跳过一代,如我的示例中节点 2ndGenA (D) 和 2ndGenB (E) 所示?
注意树应该是径向树这是由 tikzlibrary 支持的trees
。据我所知,软件包forest
和tikz-qtree
不支持径向树。但forest
有这个tier
选项。
相关问题:
答案1
我不确定这是否是您想要的,但您可以在级别 2 使用“不可见”节点,这样看起来就不像那里有节点。您只需要将它们设为coordinate
s。
如果角度很重要,您需要按照通常的方式进行调整,但我想这给出了总体思路。
\documentclass[tikz,border=9pt]{standalone}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}
[
grow cyclic,
level 1/.style={level distance=32mm, sibling angle=60},
level 2/.style={level distance=16mm, },
]
% Root
\node (root) {[1] root}
% [2] % [3]
child foreach \name in {{[2] A},{[2] B},{[2] C}} {node {\name}}
child {node [coordinate] {} child {node {[3] D}}}
child { node [coordinate] {} child {node {[3] E}}}
;
\draw[dashed] (0,0) circle [radius=32mm] circle [radius=48mm];
\end{tikzpicture}
\end{document}