Tikz 树中的大节点导致重叠

Tikz 树中的大节点导致重叠

在上一个问题中节点数量过多导致重叠,我愚蠢地尝试使用 Node 创建树。这种方法导致随着树变大,节点重叠。用户 Ignasi 建议我使用Tikz 树反而。

在这里,我已切换到使用 tikz 树,但遇到了同样的问题。请查看屏幕截图并尝试使用 MWE(使用编译pdflatex),请告知我该如何解决这个问题。

编辑包括屏幕截图和 MWE

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}
\usepackage{adjustbox}     %shrink Tikz or figures
\usepackage{pdflscape}     %landscape Tikz image
\usetikzlibrary{positioning,shadows,shapes,arrows}

\begin{document}

\begin{landscape}
\begin{center}
\begin{adjustbox}{max size={\textwidth}{\textheight}}
\begin{tikzpicture}[sibling distance=10em, every node/.style = {shape=rectangle, rounded corners, draw, align=center, top color=white, bottom color=blue!20}]

\node {Blablabla}
   child { node {Blablabla} }
   child { node {Blablabla} }
   child { node {Blablabla}
      child { node {Blablabla} }
      child { node {Blablabla} }
      child { node {Blablabla}
         child { node {Blablabla}
            child { node {Blablabla} }
            child { node {Blablabla} }
            child { node {Blablabla}
               child { node {Blablabla} 
                  child { node {Blablabla}
                     child { node {Blablabla} }
                  }
               }
               child { node {Blablabla}
                  child { node {Blablabla} }
               }
            }
            child { node {Blablabla}
               child { node {Blablabla} }
            }
         }
         child { node {Blablabla}
            child { node {Blablabla}
               child { node {Blablabla} }
               child { node {Blablabla} }
               child { node {Blablabla} 
                  child { node {Blablabla}
                     child { node {Blablabla} }
                     child { node {Blablabla} }
                  }
                  child { node {Blablabla}
                     child { node {Blablabla}
                        child { node {Blablabla}
                           child { node {Blablabla}}}}}}}}}};

\end{tikzpicture}
\end{adjustbox}
\end{center}
\end{landscape}
\end{document}

编辑:图片 2以下是带有独特文本的屏幕截图,以便更容易区分节点的排列方式

在此处输入图片描述

編輯:MWE 2这是新的最小工作示例,展示了独特的文本

\documentclass{article}

\usepackage{tikz}
\usepackage{adjustbox}     %shrink Tikz or figures
\usepackage{pdflscape}     %landscape Tikz image
\usetikzlibrary{positioning,shadows,shapes,arrows}

\begin{document}

\begin{landscape}
\begin{center}
\begin{adjustbox}{max size={\textwidth}{\textheight}}
\begin{tikzpicture}[sibling distance=10em, every node/.style = {shape=rectangle, rounded corners, draw, align=center, top color=white, bottom color=blue!20}]

\node {Blablabla1}
   child { node {Blablabla2} }
   child { node {Blablabla3} }
   child { node {Blablabla4}
      child { node {Blablabla5} }
      child { node {Blablabla6} }
      child { node {Blablabla7}
         child { node {Blablabla8}
            child { node {Blablabla9} }
            child { node {Blablabla10} }
            child { node {Blablabla11}
               child { node {Blablabla12} 
                  child { node {Blablabla13}
                     child { node {Blablabla14} }
                  }
               }
               child { node {Blablabla15}
                  child { node {Blablabla16} }
               }
            }
            child { node {Blablabla17}
               child { node {Blablabla18} }
            }
         }
         child { node {Blablabla19}
            child { node {Blablabla20}
               child { node {Blablabla21} }
               child { node {Blablabla22} }
               child { node {Blablabla23} 
                  child { node {Blablabla24}
                     child { node {Blablabla25} }
                     child { node {Blablabla26} }
                  }
                  child { node {Blablabla27}
                     child { node {Blablabla28}
                        child { node {Blablabla29}
                           child { node {Blablabla30}}}}}}}}}};

\end{tikzpicture}
\end{adjustbox}
\end{center}
\end{landscape}
\end{document}

答案1

Forest 尤其擅长绘制紧凑型树,并能自动排列树,使节点和边(在绝大多数情况下)不会发生碰撞。当然,它不会神奇地让大东西适合小盒子,但它会确保大东西从足够大的盒子开始。

例如:

\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    rounded corners,
    draw,
    align=center,
    top color=white,
    bottom color=blue!20,
  },
  forked edges,
  [a
    [b]
    [c]
    [d
      [e]
      [f]
      [g
        [h
          [j]
          [k]
          [l]
          [m[y][z]]
        ]
        [i
          [n
           [h
            [j]
            [k]
            [l]
            [m[y][z]]
          ]
         ]
          [o
            [q
              [h
                [j]
                [k]
                [l]
                [m[y][z]]
              ]
            ]
            [r[s[t[u
              [v]
              [w]
              [x]
            ]]]]
          ]
          [p
            [q[u
              [v]
              [w]
              [x]
            ]]
            [r[s[t[u
              [v]
              [w]
              [x]
            ]]]]
          ]
        ]
      ]
    ]
  ]
\end{forest}
\end{document}

紧凑树

或者,对于问题中的示例文本,结构相同但节点内容相同:

节点较少的紧凑树

\begin{forest}
  for tree={
    rounded corners,
    draw,
    align=center,
    top color=white,
    bottom color=blue!20,
  },
  forked edges,
  [Blablabla
    [Blablabla]
    [Blablabla]
    [Blablabla
      [Blablabla]
      [Blablabla]
      [Blablabla
        [Blablabla
          [Blablabla]
          [Blablabla]
          [Blablabla]
          [Blablabla[Blablabla][Blablabla]]
        ]
        [Blablabla
          [Blablabla
           [Blablabla
            [Blablabla]
            [Blablabla]
            [Blablabla]
            [Blablabla[Blablabla][Blablabla]]
          ]
         ]
          [Blablabla
            [Blablabla
              [Blablabla
                [Blablabla]
                [Blablabla]
                [Blablabla]
                [Blablabla[Blablabla][Blablabla]]
              ]
            ]
            [Blablabla[Blablabla[Blablabla[Blablabla
              [Blablabla]
              [Blablabla]
              [Blablabla]
            ]]]]
          ]
          [Blablabla
            [Blablabla[Blablabla
              [Blablabla]
              [Blablabla]
              [Blablabla]
            ]]
            [Blablabla[Blablabla[Blablabla[Blablabla
              [Blablabla]
              [Blablabla]
              [Blablabla]
            ]]]]
          ]
        ]
      ]
    ]
  ]
\end{forest}

显然,您可以将其放在比例框或其他任何位置,尽管这几乎不被推荐并且可能会使树变得不可读。

相关内容