我正在尝试绘制决策树。我已经非常接近最终结果了:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees,shapes,snakes}
\begin{document}
\tikzstyle{level 1}=[level distance=1.5cm, sibling distance=2.5cm]
\tikzstyle{level 2}=[level distance=1cm, sibling distance=2cm]
\tikzstyle{level 3}=[level distance=1cm, sibling distance=1.5cm]
\tikzstyle{bag} = [rectangle, text width=4em, text centered, draw]
\tikzstyle{decision} = [rectangle, minimum height=8pt, minimum width=8pt, fill, inner sep=0pt]
\tikzstyle{choice} = [circle, minimum width=8pt, fill, inner sep=0pt]
\tikzstyle{end} = [regular polygon, regular polygon sides=3, minimum width=8pt, fill, inner sep=0pt]
\begin{tikzpicture}[grow=right,child anchor=west]
\tiny
\node[bag]{Decision}
child {
node[decision]{}
child {
node[bag]{Option 1}
child{
node[choice]{}
child {
node[bag]{Outcome 1}
child {
node[end]{}
}
}
child {
node[bag]{Outcome 2}
child {
node[end]{}
}
}
}
}
child {
node[bag]{Option 2}
child{
node[choice]{}
child {
node[bag]{Outcome 3}
child {
node[end]{}
}
}
child {
node[bag]{Outcome 4}
child {
node[end]{}
}
}
}
}
};
\end{tikzpicture}
\end{document}
我遇到的唯一问题是,我无法找到旋转最后一个节点(末端)的方法,该节点呈三角形,因为它应该指向其父节点,而不是向上。有什么想法吗?
答案1
您可以end
使用选项旋转节点shape border rotate=90
(与不同rotate=90
,这不会移动树使用的锚点,因此形状将正确对齐)。
这会在三角形的尖端和树的边缘之间留下一个小间隙。为了避免这种情况,您可以设置outer sep=-\pgflinewidth
,这会将锚点稍微移动到形状内部,这样树的边缘和三角形就会重叠。