我想要实现类似这样的目标(没有边界框):
这里,第一个子项与父项有一条直线,接下来的子项则是对角线。
哪些 tikzset 设置可以允许这样做,或者我将如何实现这一点,以及我可以在哪里了解更多有关它的信息?
目前我有:
\tikzset{every tree node/.style={minimum width=2em,draw,circle},
blank/.style={draw=none},
edge from parent/.style=
{draw, edge from parent path={(\tikzparentnode) -- (\tikzchildnode)}},
level distance=1.5cm}
这是我在 tex.sx 上的一篇文章中得到的,但对其工作原理了解不多。
答案1
使用森林包中,你可以定义一个样式,我们将在这里调用它乙,然后将其应用到每棵树:
\documentclass[a4paper]{article}
\usepackage{forest}
\forestset{
B/.style={for tree={calign=last, circle,draw}}
}
\begin{document}
\begin{forest}
B
[9
[6
[4
[3]
]
[2]
]
[5
[1]
]
[7]
]
\end{forest}
\end{document}
结果:
答案2
另一种选择是通过tikz
树。这里event
为每个节点定义了一个圆形的样式。
代码
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\begin{document}
\begin{tikzpicture}
[event/.style={circle,thick,draw,text width=0.6cm, text centered,font=\sffamily,anchor=north},
edge from parent/.style={very thick,draw=black!70},
]
\node (g) [event] {}
child {node[event,below= 1cm of g] (e3) {}}
child {node[event,left=1cm of e3] (e2) {}
child {node[event, below=1cm of e2] (e21) {}
}
}
child {node[event,left=1cm of e2] (e1){}
child {node[event,below= 1cm of e1] (e11) {}
}
child {node[event,left=1cm of e11] (e12) {}
child[event]{node[event]{}}
}
};
\end{tikzpicture}
\end{document}