我是新手tikz-qtree
,我想在 LaTeX 中重现此图:
到目前为止,我已经设法拼凑了这段代码,但结果有点滑稽,因为空节点(没有文本的节点)看起来比有文本的节点小。其次,我还没有完全设法将文本放在节点上方或节点/边缘的对面,如图所示。
如何让所有圆的半径都相同,而不管它们是空的还是填充的?
\begin{tikzpicture}[every tree node/.style={draw,circle}]
\Tree[.{Root}
[.4 11 {} ]
[.5 6 {} ]
]
\end{tikzpicture}
我认为要做到这一点,我可能需要使用固定半径指定一个新节点,\newcommand
对吗?但是,我的尝试没有成功。
答案1
您可以指定节点的最小大小,并固定兄弟节点和级别距离。为了绘制与级别匹配的注释,我们创建了另一棵树,该树的分支为空,但级别距离相同。为了使样式参数保持独立,每棵树都包装在自己的{scope}
环境中。
\documentclass{article}
\usepackage{tikz-qtree}
\usetikzlibrary{positioning}
\definecolor{blech}{rgb}{.78,.78.,.62}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\tikzset{edge from parent/.append style={draw=none},
every tree node/.style={draw=none},level distance=2cm
}
\Tree [[.{Level 1} [.{Level 2} ]]]
\end{scope}
\begin{scope}[xshift=2in]
\tikzset{every tree node/.style={draw,circle, minimum size=2em,fill=blech},
level distance=2cm,sibling distance=1cm}
\Tree[.\node (Root) {};
[.4 11 {} ]
[.5 6 {} ]
]
\node [above=.25cm of Root] {Root};
\end{scope}
\end{tikzpicture}
\end{document}
答案2
推荐使用 PSTricks 的解决方案。
\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{pst-tree}
\definecolor{mycolor}{RGB}{199 199 158}% my own color
\psset{radius=10pt,fillstyle=solid,fillcolor=mycolor}
\begin{document}
\psTree[thislevelsep=0]{\Tn}
\psTree{\Tn}
\psTree[edge=none]{\Tr{Level 1}}
\Tr{Level 2}
\endpsTree
\endpsTree
\psTree{\TCircle{}~[tnpos=a]{Root}}
\psTree{\TCircle{4}}
\TCircle{11}
\TCircle{}
\endpsTree
\psTree{\TCircle{5}}
\TCircle{6}
\TCircle{}
\endpsTree
\endpsTree
\endpsTree
\end{document}