跳过 tikz 树中的一代

跳过 tikz 树中的一代
\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。据我所知,软件包foresttikz-qtree不支持径向树。但forest有这个tier选项。

相关问题:

答案1

我不确定这是否是您想要的,但您可以在级别 2 使用“不可见”节点,这样看起来就不像那里有节点。您只需要将它们设为coordinates。

“跳过”级别

如果角度很重要,您需要按照通常的方式进行调整,但我想这给出了总体思路。

\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}

相关内容