我是 TikZ 的初学者,我尽我所能寻找解决方案,但这个话题太晦涩,目前还没有合适的答案。首先,这是我的代码:
\begin{tikzpicture}[
every node/.style = {draw, circle, minimum size = 1cm},
grow via three points = {one child at (1.25,1.25) and two children at (1.25,1.25) and (2.5,1.25)},
edge from parent path = {(\tikzparentnode.east) -| (\tikzchildnode.south)}
]
\node{}
child {
node{}
child{node{}}
child{node{}}
child{node{}}
}
child[missing]{}
child[missing]{}
child[missing]{}
child {
node{}
child {
node{}
child {node{}}
}
child[missing]{}
child{node{}}
};
\end{tikzpicture}
渲染后的效果如下:
此代码最初更复杂,包含大量重复命令,但我设法使用这种方便的子/节点语法简化了它。我也尝试查看森林包,但它似乎不允许这种类型的树。无论如何,我的问题是边缘有非常尖锐的转弯,我想让它们更圆润。以下帖子似乎包含了我正在寻找的解决方案,但我尝试时它不起作用:节点之间的连接处有圆角
(也就是说,我尝试添加every edge/.style = {draw, rounded corners = 0.5cm},
,但似乎没有任何反应。)
所以这就是我现在陷入困境的地方。考虑到我最终想要创建多少个这样的图像,我不想使用任何其他类型的语法(比节点/子节点更复杂)。我越能简化和自动化实际代码,就越好。我也不想为了迁移到不同的解决方案(即森林)而以任何方式旋转或反射树,它必须从左下角开始向上生长。再说一次,为了绝对清楚我想要实现的目标,下面是使用 draw.io 渲染的插图:
谢谢您的任何回答。
答案1
将rounded corners
选项添加到edge from parent path
。
edge from parent path = {[rounded corners=3mm](\tikzparentnode.east) -| (\tikzchildnode.south)}
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{trees}
\begin{document}
\begin{tikzpicture}[
every node/.style = {draw, circle, minimum size = 1cm},
grow via three points = {one child at (1.25,1.25) and two children at (1.25,1.25) and (2.5,1.25)},
edge from parent path = {[rounded corners=3mm](\tikzparentnode.east) -| (\tikzchildnode.south)},
]
\node{}
child {
node{}
child{node{}}
child{node{}}
child{node{}}
}
child[missing]{}
child[missing]{}
child[missing]{}
child {
node{}
child {
node{}
child {node{}}
}
child[missing]{}
child{node{}}
};
\end{tikzpicture}
\end{document}