在 TikZ 中创建径向树

在 TikZ 中创建径向树

我是一个相当新的 TikZ 用户,我正在寻找一种生成类似这样的径向树的方法:

在此处输入图片描述

或这个:

在此处输入图片描述

到目前为止,我有两种方法可以做到这一点:

1)手动编程 - 这涉及相当多的设置,即使对于我的(相对)只有十几个节点的小型树来说,也可能是一个非常耗时的项目。

2)使用思维图库- 这是我找到的最近的图书馆,但经过很多阅读有关该主题的内容,看来它需要大量修改才能作为径向树而不是思维导图发挥作用。必须更改线条,并且必须稍微改变节点的位置。

是否有一个好的 TikZ 库或方法来生成径向树,其中 A)使用线连接节点,并且 B)控制节点与根的距离,即给定深度的所有节点与根的距离相同,而具有太多兄弟节点的节点的距离则交错?

标准 B 不是强制性的,但我强烈希望如此:如果能够根据兄弟节点的数量修改节点的位置就好了,但关键仍然是创建径向树,它看起来不像思维导图那么愚蠢,并且可以对节点的位置进行一些控制。

答案1

一种可能性:

\documentclass[png,tikz,border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{trees,decorations,shadows}

% style definitions
\tikzset{level 1/.style={sibling angle=60,level distance=25mm}}
\tikzset{level 2/.style={sibling angle=35,level distance=18mm}}
\tikzset{level 3/.style={sibling angle=20,level distance=12mm}}
\tikzset{every node/.style={inner sep=0pt,circular drop shadow}}
\tikzset{edge from parent/.style={segment angle=10,draw}}

\begin{document}

\begin{tikzpicture}
[grow cyclic,shape=circle,cap=round,scale=0.5]
\node[draw,top color=blue!10,bottom color=blue,minimum size=12pt] {} 
 child  foreach \A in {red,red,red,red,red,red}{  
   node[draw,top color=\A!10,bottom color=\A,minimum size=8pt] {} 
     child foreach \B in {green,green,green}{ 
       node[draw,top color=\B!10,bottom color=\B,minimum size=6pt] {} 
         child foreach \C in {magenta,magenta,magenta}{
          node[draw,top color=\C!10,bottom color=\C,minimum size=4pt] {} }
    }
};
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述

相关内容