我是 TikZ 新手,正在尝试绘制一棵树,边缘 (动作/线) 上只带有文本。我已经设法做到了如下所示,但我希望有一种更简洁/易读的方法。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{figure}
\begin{center}
\tikzstyle{level 1}=[level distance=1cm, sibling distance=2.5cm]
\tikzstyle{level 2}=[level distance=1cm, sibling distance=2.5cm]
\tikzstyle{level 3}=[level distance=1cm, sibling distance=1cm]
\tikzstyle{level 4}=[level distance=1cm, sibling distance=2cm]
\tikzstyle{circleNode}=[circle,draw]
\tikzstyle{dotNode} = [circle, minimum width=3pt,fill, inner sep=0pt]
\begin{tikzpicture}
\node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
edge from parent
node[left]{j}
}
edge from parent
node[left]{$\tau$*}
}
edge from parent
node[left]{b}
}
edge from parent
node[left]{$\tau$*}
}
edge from parent
node[left]{b}
}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
child{
node [dotNode] {}
edge from parent
node[right]{k}
}
edge from parent
node[right]{$\tau$*}
}
edge from parent
node[right]{b}
}
edge from parent
node[right]{$\tau$*}
}
edge from parent
node[right]{b}
}
edge from parent
node[left]{$\tau$*}
}
edge from parent
node[left]{a}
}
edge from parent
node[left]{$\tau$*}
}
edge from parent
node[left]{a}
};
\end{tikzpicture}
\end{center}
\end{document}
答案1
你可以看看我基于 tikz 的树绘制包forest
。文档中的图库包含一种易于绘制决策树的样式(灵感来自问题如何仅更改 tikz-qtree 中一个级别的级别距离?在此网站上)。
我只是稍微概括了一下风格并将其发布到forest
样式存储库。使用 style-package forest-decisiontree
,你可以像这样绘制树:
\documentclass{minimal}
\usepackage{forest-decisiontree}
\begin{document}
\begin{forest} decision tree={3em}{8ex}{2pt}
[[;a[;\tau^*[;a[;\tau^*
[;b[;\tau^*[;b[;\tau^*[;j]]]]]
[;b[;\tau^*,for tree={decision on right}
[;b[;\tau^*[;k]]]]]
]]]]]
\end{forest}
\end{document}