如何使 TikZ 树中的图形边缘变圆?(保留干净的语法)

如何使 TikZ 树中的图形边缘变圆?(保留干净的语法)

我是 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}

相关内容