我是一个相当新的 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}
结果: