tikz 树。子节点未按预期显示。我的错误在哪里?

tikz 树。子节点未按预期显示。我的错误在哪里?

我正在学习 tikz 树,以便我可以制作流程图。

在下面这个例子中,我有linearseperable子节点,它们应该是节点的子节点degree 1,但它们与节点的子节点混合显示higher degree than one。我知道我做的不对。如何修复它?这是第一个屏幕截图

在此处输入图片描述

这是 MWE

\documentclass[12pt]{book}
\usepackage[export]{adjustbox}  
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{trees} 

\begin{document}
\tikzset{level 1/.style={sibling distance=4cm}, 
         level 2/.style={sibling distance=5cm},
         level 3/.style={sibling distance=5cm}} 
     
\begin{tikzpicture}[node distance = 10cm, auto]
    % Place nodes
    \node {ode} [edge from parent fork down]
    child {node   {first order}
       child {node  {\adjustbox{max width=2cm}{degree 1}} 
            child {node  {linear}}
            child {node  {seperable}}
       }
       %    
       child {node  {\adjustbox{max width=3cm}{higher degree than one}}
           child {node  {\adjustbox{max width=2cm}{Find roots of $p$}}}
           child {node  {solve for $y$}}
           child {node  {solve for $x$}}
       }
    }
    child  {node  {second order}} 
    child  {node  {higher order}}; 
\end{tikzpicture}
\end{document}

答案1

实际上,您的代码中没有什么问题,您只需要调整样式,尤其是关于sibling distances 的样式。根据您现有的设置,sibling distanceforlevel 3太大,因此右侧分支的节点与左侧分支重叠,从而产生这个奇怪的输出。

sibling distance您应该减少for的长度level 3,也许还可以增加sibling distancefor 的长度level 2。此外,在这种情况下,该选项node distance在树中毫无用处。

最后,我可能不会\adjustbox在节点内使用,而是减小字体大小或插入换行符。为了能够执行后者,您可以设置align=center节点。您可能还想设置text depth=0pt以正确对齐节点的基线。

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees} 

\begin{document}
\tikzset{
    level distance=2cm,
    level 1/.style={sibling distance=3cm}, 
    level 2/.style={sibling distance=6cm},
    level 3/.style={sibling distance=2.5cm},
    every node/.style={align=center, text depth=0pt}
} 
     
\begin{tikzpicture}
    % Place nodes
    \node {node} [edge from parent fork down]
    child {node {first order}
       child {node {degree 1}
            child {node {linear}}
            child {node {seperable}}
       }
       %    
       child {node {higher degree \\ than one}
           child {node {Find roots \\ of $p$}}
           child {node {solve for $y$}}
           child {node {solve for $x$}}
       }
    }
    child {node {second order}} 
    child {node {higher order}}; 
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容