我正在使用 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
对齐。然后,它会绘制将父节点连接到叶节点锚点的分支。这对垂直树有效,但会导致水平树错位。base
center
为了解决这个问题,添加
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}