TikZ 中的水平决策树

TikZ 中的水平决策树

我一直在寻找一个 TikZ 示例,它看起来类似于所附的 powerpoint 图片。我无法想象没有人做过类似的事情。我尝试改编这个例子,但失败了……

微软幻灯片软件

有人知道我可以在哪里找到类似的图表吗?

有没有办法将 LaTeX 表格环境添加到 TikZ 图片中?

答案1

这是一个使用 的解决方案forest

在这种情况下,使用浮点数是没有意义的,因此表格无法从table环境的自动编号中受益。但是,您可以安排让它们自动编号并添加到表格列表中。为此,您需要在计数器递增时和内容行写入时多加注意。在下面的代码中,这是在标签本身排版时完成的。

表格放在常规节点中,仅被花括号包围。

虚线和级别标签是在绘制树后添加的。name提供的键forest用于帮助定位,并brace使用 TiKZ 装饰来表示此处所需的线条。calc用于计算级别标签本身的位置。

\documentclass[tikz,border=5pt]{standalone}
\usepackage{forest}
\usetikzlibrary{decorations.pathreplacing,calc}
\begin{document}

\forestset{
  my level/.style={
    where n=1{
      name/.wrap pgfmath arg={level ##1}{level()},
    }{},
  },
  my circle/.style={
    shape=circle,
    fill,
    minimum size=1.5pt,
    inner sep=0pt,
    outer sep=0pt,
  },
  my tabular/.style={
    no edge,
    for children={
      edge={draw, ->},
    },
    for parent={
      l sep=0pt,
      for tree={
        fit=band,
      },
      for parent={
        calign=child,
        calign child=2,
      },
    },
    ->,
  },
  my tabular label/.style={
    label={\stepcounter{table}\addcontentsline{lot}{table}{\numberline {\thetable}{\ignorespaces Table \thetable}}\footnotesize Table \thetable},
  },
  /tikz/my label/.style={
    font=\scriptsize,
    midway,
  },
}

\begin{forest}
  for tree={
    grow=east,
    parent anchor=east,
    child anchor=west,
    anchor=center,
    align=center,
    where level=0{
      draw,
    }{
      my level,
    },
  }
  [Text, name=my root, l sep+=10pt
    [, my circle, edge label={node [my label, below] {\dots}}]
    [, my circle]
    [, my circle
      [, my circle, edge label={node [my label, below] {\dots}}]
      [, my circle]
      [, my circle
        [{\begin{tabular}{|c|c|c|}
            \hline
              aaa & bbb & ccc\\\hline
                &   &   \\\hline
                &   &   \\\hline
              \end{tabular}}, my tabular, my tabular label
          [{\begin{tabular}{|c|c|c|}
              \hline
                aaa & bbb & ccc\\\hline
                  & &   \\\hline
                  & &   \\\hline
            \end{tabular}}, my tabular label
          ]
        ]
      ]
    ]
  ]
  \path [draw, dashed] (level 1.center |- current bounding box.north) +(0,10pt) -- (level 1.center |- current bounding box.south) -- +(0,-10pt) coordinate (bot);
  \path [draw, decoration=brace, decorate]
    (level 1.west |- bot) coordinate (c1) -- (my root.east |- bot) coordinate (c2) ;
  \path [draw, decoration=brace, decorate]
    (level 2.west |- bot) coordinate (c3) -- (level 1.east |- bot) coordinate (c4);
    \node [anchor=north] at ($(c1)!1/2!(c2)$) {Text};
    \node [anchor=north] at ($(c3)!1/2!(c4)$) {Text};
\end{forest}
\listoftables

\end{document}

带表格的决策树

相关内容