具有节点组的排版树

具有节点组的排版树

如何创建一棵树,其中某些节点分组,因此它们之间没有空间,并且只有一个箭头连接父节点和整个组,但我仍然可以将子节点(相同样式)单独添加到组中的这些节点?重要的是箭头必须从其中一个节点出来,而不是组的中间。我尝试使用rectangle split但找不到方便的方法来添加子节点。我正在寻找的最终效果(或多或少): 树

完美的解决方案是,我可以创建简单的rectangle节点,然后以某种方式对它们进行分组并应用样式使它们看起来像图片一样。

答案1

正如@Alan Munn 在他的评论中提到的,你的三个可以简单地使用positioningshapes.multipart库绘制为纯 TikZ 图片:

在此处输入图片描述

\documentclass[tikz,margin=3.141592]{standalone}
\usetikzlibrary{arrows.meta,
                positioning,
                shapes.multipart}

\begin{document}
    \begin{tikzpicture}[
node distance = 2mm and 11mm,
every edge/.style = {draw, -Straight Barb, very thick},
  MPNV/.style = {
    rectangle split,
    rectangle split parts=10,
    rectangle split ignore empty parts,
    draw},
        ]
\node (n1)  [MPNV=1] {single node};
\node (n2)  [MPNV=3, right=of n1, anchor=three west]       
                                       {node 1 in group
                     \nodepart{two}     node 2 in group 
                     \nodepart{three}   node 3 in group};
\node (n3)  [MPNV=3, right=of n2]       {node 1 in another group
                     \nodepart{two}     node 2 in another group
                     \nodepart{three}   node 3 in another group};
\node (n4)  [MPNV=3, below=of n3]       {node 1 in another group
                     \nodepart{two}     node 2 in another group
                     \nodepart{three}   node 3 in another group};
\node (n5)  [MPNV=1, below right=of n2.east |- n4.south]       
                                       {another single node};
%
\path   (n1.east)       edge (n2.west)
        (n2.one east)   edge (n3.west)
        (n2.two east)   edge (n4.west)
        (n2.three east) edge (n5.west);
    \end{tikzpicture}
\end{document}

上面的 MWE 允许添加节点部分,最多可达十个。如果您想要更多的节点部分,则相应地增加rectangle split parts=...。未使用的(空)节点不会被绘制。要绘制连接箭头,您需要使用nodeparts 的锚点。

相关内容