我正在寻找通用代码来获取与森林概率树中的线具有相同正交距离的标签

我正在寻找通用代码来获取与森林概率树中的线具有相同正交距离的标签

我有这个:

\documentclass{article}
\usepackage{forest,tikz}

\forestset{
    ptree/.style={
        for tree={
            grow'=east, %grow' reverses direction of reading...for horizontal to the right, use it
            l=2.5cm, %length of the branches
            %s sep=1em, %spreads out ends of branches
            parent anchor=children,
            child anchor=west,
            anchor=west, %child anchor west w/ anchor west lines up words on left edge
%           calign=first %to match tree tab of Workbooks
        },
        before typesetting nodes={
            for tree={
                split option={content}{:}{content, my edge label},
            },
        },
    },
 my edge label/.style={
    if={n_children("!u")>2
    }{edge label={node [pos=.55, above=2ex, font=\footnotesize,draw,anchor=center] {#1} }%true
    }{%false  
    if={             > O_= {n'}{1}         }
        {   edge label={node [pos=.55, below=.5ex, font=\footnotesize] {#1} }
        }{
            edge label={node [pos=.55, above=.5ex, font=\footnotesize] {#1} }
        },
    }%end false
}%end style
}%end forestset
\begin{document}
    \pagestyle{empty}
    
    Looks good with decimals above:
    \begin{forest}
        ptree
        [[W:.5[W][L]][L:.5[W][L]]]
    \end{forest}

    \begin{forest}
    ptree
    [[A:0.1[Def:.3][Good:.7]]
     [B:0.3[Def:.03][Good:.97]]
     [C:0.6[Def:.02][Good:.98]]]
    \end{forest}


\end{document}

使用的代码来自使用带边标签的森林的水平概率树

对于两个分支来说,太惊人了!(第一个森林)对于三个分支来说,中间分支上的 .3 设置得太高了(第二个森林)。

我希望边缘标签与线条的正交距离相同且不倾斜,实际上数字总是位于线的上方就可以了。我还希望它们都位于相同的水平位置(因此 pos=.55),因此“auto”不起作用(因为它会改变水平对齐方式)。

我对森林非常陌生,我知道我可以用 tikz 手动完成这项工作。我希望有人知道一个简单的解决方案,让每个级别的标签在水平方向上处于相同的位置,而垂直位置由文本最近点到它所标记的行之间的正交距离决定。

感谢您的任何帮助!

编辑:是否有某种方法可以控制边缘标签中的 n 个子节点或 n_children,以使其在 3 个或更多分支上方,并且按原样显示 2 个分支?(我在森林中的“控制”上遇到了语法问题。)
编辑:——我解决了这个问题... if={n_children("!u")>2} 作为条件。

我仍然想知道如何保持正交距离相同,因为当倾斜分支的标签看起来不错时,中间分支的边缘标签似乎太高。

新的三枝树-.3 仍然太高

相关内容