对齐/证明决策树

对齐/证明决策树

我想制作一个与此图一模一样的图表,但没有红色边框。我正在使用 qtree 包来获得类似的结果,但我遇到了两个问题。首先,我无法对树叶进行右对齐;其次,边缘/线条有时会与节点中的单词重叠。

在此处输入图片描述 在此处输入图片描述 下面是我用来生成 tikz 图像的代码

\usepackage{qtree}
\usepackage{tikz}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\tikzset{grow'=right} % make trees grow from left to right
\tikzset{every tree node/.style={anchor=base west}} % align nodes of the tree to the left (west)
\Tree [.S [.NP LaTeX ] [.VP [.V is ] [.NP fun ] ] ]
\\
\\
\clearpage
% In the document:
\begin{tikzpicture}
    \small
    \node (is-root) {Heildarskaði}
        [sibling distance=6.5cm]
        child {
            [sibling distance=3.3cm]
            child { 
                child {node {Fyrir notendur}
                child {
                    [sibling distance=1cm]
                    child { node {Líkamlegur} 
                        child {
                            child { 
                                [sibling distance=0.5cm]
                                child {node {Bein dánartíðni vímuefna}}
                            }
                        }
                        child {
                            child { 
                                child {node {Tengd dánartíðni vímuefna}}
                            }
                        }
                        child {
                            child { 
                                child {node {Beinn skaði vímuefna}}
                            }
                        }
                        child {
                            child { 
                                child {node {Tengdur skaði vímuefna}}}
                            }
                        }
                }
                child {
                    [sibling distance=1cm]
                    child { node {Sálrænn} 
                        child {
                            child { 
                                [sibling distance=0.5cm]
                                child {node {Fíkn}}
                            }
                        }
                        child {
                            child { 
                                child {node {Beinn skaði vímuefna á geðheilsu}}
                            }
                        }
                        child {
                            child { 
                                child {node {Óbeinn skaði vímuefna á geðheilsu}}
                            }
                        }
                    }
                }
                child {
                    [sibling distance=1cm]
                    child { node {Samfélagslegur} 
                        child {
                            child { 
                                [sibling distance=0.5cm]
                                child {node {Tap á efnislegum þörfum}}
                            }
                        }
                        child {
                            child { 
                                child {node{Tap á félagslegum þörfum}}
                            }
                        }
                    }
                } 
                }
            }
        }
        child {
            [sibling distance=3.5cm]
            child { 
                child {node { Fyrir aðra}
                    child {
                    [sibling distance=1cm]
                    child { node {Líkamlegur og sálrænn} 
                        child {
                            child { 
                                [sibling distance=0.5cm]
                                child {node {Skaði}}
                            }
                        }
                    }
                }
                child {
                    [sibling distance=1cm]
                    child { node {Samfélagslegur} 
                        child {
                            child { 
                                [sibling distance=0.5cm]
                                child {node {Glæpatíðni}}
                            }
                        }
                        child {
                            child { 
                                child {node {Umhverfislegur skaði}}
                            }
                        }
                        child {
                            child { 
                                child {node {Neikvæð áhrif á fjölskyldu}}
                            }
                        }
                        child {
                            child { 
                                child {node {Alþjóðlegur skaði}}}
                            }
                        child {
                            child { 
                                child {node {Efnahagslegur kostnaður}}
                            }
                        }
                        child {
                            child { 
                                child {node {Þjóðfélagslegur skaði}}}
                            }
                    }
                }
                }
            }
                %child[missing]
        };
    \path (is-root) +(0,-2.5\tikzleveldistance)
\end{tikzpicture}

答案1

不错的小变化@Ross 回答(+1)。差异如下% <---

\documentclass[border=3.141592]{standalone}
\usepackage[edges]{forest}

\begin{document}
\begin{forest}
  for tree={
    grow'=east,
    anchor=east,   % <---
    edge path = {
           \noexpand\path[\forestoption{edge}]
           (!u.parent anchor) -- (!u.east |- .child anchor) --  (.child anchor) % <---
           \forestoption{edge label};
                },
  tier/.option = level, % <---
    }
  [Heildarskaði
     [Fyrir notendur
       [Líkamlegur
         [Bein dánartíðni vímuefna]
         [Tengd dánartíðni vímuefna]
         [Beinn skaði vímuefna]
         [Tengdur skaði vímuefna]
         [,phantom] % <---
       ]
       [Sálrænn,before computing xy={s/.average={s}{siblings}} % <---
         [Fíkn]
         [Beinn skaði vímuefna á geðheilsu]
         [Óbeinn skaði vímuefna á geðheilsu]
       ]
       [Samfélagslegur
         [Tap á efnislegum þörfum]
         [Tap á félagslegum þörfum]
       ]
     ]
     [Fyrir aðra
       [Líkamlegur og sálrænn
         [Líkamlegur og sálrænn]
       ]
       [Samfélagslegur
         [Glæpatíðni]
         [Umhverfislegur skaði]
         [Neikvæð áhrif á fjölskyldu]
         [Alþjóðlegur skaði]
         [Efnahagslegur kostnaður]
         [Þjóðfélagslegur skaði]
       ]
     ]
   ]
\end{forest}
\end{document}

使用XeLaTeX或编译后LuaLaTeX您将获得:

在此处输入图片描述

答案2

欢迎来到 TeX.SE。它使用Forest,它具有绘制树的良好语法。我剩下一个问题,即当只有一个叶节点时如何实现您喜欢的边缘样式。我尝试过where n children=1 {},但没有得到合适的解决方案。您也许可以自己解决这个问题,或者有人可以在这里告诉我们。

\documentclass[tikz,border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    grow'=east,
    where n children=0{tier=terminus,anchor=east}{},
    calign=center,
    edge path = {
           \noexpand\path[\forestoption{edge}]
           (!u.parent anchor) -- ([xshift=8mm]!u.parent anchor |- .child anchor) --  (.child anchor) \forestoption{edge label};
         }
    }
  [Heildarskaði
     [Fyrir notendur
       [Líkamlegur
         [Bein dánartíðni vímuefna]
         [Tengd dánartíðni vímuefna]
         [Beinn skaði vímuefna]
         [Tengdur skaði vímuefna]
       ]
       [Sálrænn
         [Fíkn]
         [Beinn skaði vímuefna á geðheilsu]
         [Óbeinn skaði vímuefna á geðheilsu]
       ]
       [Samfélagslegur
         [Tap á efnislegum þörfum]
         [Tap á félagslegum þörfum]
       ]
     ]
     [Fyrir aðra
       [Líkamlegur og sálrænn
         [Líkamlegur og sálrænn]
       ]
       [Samfélagslegur
         [Glæpatíðni]
         [Umhverfislegur skaði]
         [Neikvæð áhrif á fjölskyldu]
         [Alþjóðlegur skaði]
         [Efnahagslegur kostnaður]
         [Þjóðfélagslegur skaði]
       ]
     ]
   ]
\end{forest}
\end{document}

在此处输入图片描述

相关内容