使用 grow=left 时,tikz-qtree 中的叶节点与父节点不对齐

使用 grow=left 时,tikz-qtree 中的叶节点与父节点不对齐

我正在使用 tikz-qtree 构建旋转树。每当我使用设置“grow=left”时,叶节点就会相对于其父节点移动一个恒定的距离,因此它们之间的线不是垂直的。这似乎与旋转无关。

有什么办法可以避免吗?:)

我的代码是:

\documentclass[12pt, a4paper]{article}
\usepackage{tikz-qtree}

\begin{document}

\begin{figure}[ht]
\centering
\begin{tikzpicture}[grow=left, sibling distance=5pt,rotate=90,transform shape]
\tikzset{frontier/.style={distance from root=275pt}}
\Tree [ 
    [tip1 ]
    [
        [tip2 ]
        [
            [
                [tip3 ]
                [
                    [
                        [tip4 ]
                        [
                            [tip5 ]
                            [tip6 ]
                        ]
                    ]
                    [
                        [
                            [tip7 ]
                            [tip8 ]
                        ]
                        [
                            [
                                [tip9 ]
                                [tip10 ]
                            ]
                            [
                                [tip11 ]
                                [tip12 ]
                            ]
                        ]
                    ]
                ]
            ]
            [
                [tip13 ]
                [
                    [tip14 ]
                    [
                        [
                            [tip15 ]
                            [tip16 ]
                        ]
                        [
                            [
                                [tip17 ]
                                [tip18 ]
                            ]
                            [
                                [tip19 ]
                                [tip20 ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
]
\end{tikzpicture}
\caption{Dendogram}
\label{fig:dendogram}
\end{figure}

\end{document}

得出的数字是: 在此处输入图片描述

答案1

如果只有一个分支,它似乎会将叶节点的锚点与相应的父节点tikz-qtree对齐。然后,它会绘制将父节点连接到叶节点锚点的分支。这对垂直树有效,但会导致水平树错位。basecenter

为了解决这个问题,添加

every leaf node/.append style={anchor=center}

到您的选项tikzpicture

\documentclass[12pt, a4paper]{article}
\usepackage{tikz-qtree}

\begin{document}

\begin{figure}[ht]
\centering
\begin{tikzpicture}[grow=left, sibling distance=5pt, rotate=90, transform shape, every leaf node/.append style={anchor=center}]
\tikzset{frontier/.style={distance from root=275pt}}
\Tree [ 
    [tip1 ]
    [
        [tip2 ]
        [
            [
                [tip3 ]
                [
                    [
                        [tip4 ]
                        [
                            [tip5 ]
                            [tip6 ]
                        ]
                    ]
                    [
                        [
                            [tip7 ]
                            [tip8 ]
                        ]
                        [
                            [
                                [tip9 ]
                                [tip10 ]
                            ]
                            [
                                [tip11 ]
                                [tip12 ]
                            ]
                        ]
                    ]
                ]
            ]
            [
                [tip13 ]
                [
                    [tip14 ]
                    [
                        [
                            [tip15 ]
                            [tip16 ]
                        ]
                        [
                            [
                                [tip17 ]
                                [tip18 ]
                            ]
                            [
                                [tip19 ]
                                [tip20 ]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
]
\end{tikzpicture}
\caption{Dendogram}
\label{fig:dendogram}
\end{figure}

\end{document}

在此处输入图片描述

答案2

嗯,你的树状图可以翻译成forest

\documentclass[12pt, a4paper]{article}
\usepackage{forest}

\begin{document}
    \begin{figure}[ht]
\centering
\begin{forest}
for tree = {
    s sep=0pt,
    if n children=0{rotate=90,anchor=east,tier=word}%
                   {coordinate}
            }
[
    [[tip1]]
    [
        [[tip2]]
        [
            [
                [[tip3]]
                [
                    [
                        [[tip4]]
                        [
                            [[tip5]]
                            [[tip6]]
                        ]
                    ]
                    [
                        [
                            [[tip7]]
                            [[tip8]]
                        ]
                        [
                            [
                                [[tip9]]
                                [[tip10]]
                            ]
                            [
                                [[tip11]]
                                [[tip12]]
                            ]
                        ]
                    ]
                ]
            ]
            [
                [[tip13]]
                [
                    [[tip14]]
                    [
                        [
                            [[tip15]]
                            [[tip16]]
                        ]
                        [
                            [
                                [[tip17]]
                                [[tip18]]
                            ]
                            [
                                [[tip19]]
                                [[tip20]]
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
]
\end{forest}
\caption{Dendogram}
\label{fig:dendogram}
    \end{figure}
\end{document}

在此处输入图片描述

相关内容