我正在尝试绘制一棵具有内部节点且只有一个子节点但必须有方向的树。
/
\
/\
\
/\
与典型的 qtree 不同,其中的子项只是“挂起”:
|
|
/ \
|
|
/ \
我认为(但我不知道如何)可能可以使用不可见的叶子来强制方向,但也许(希望)有更好的解决方案?这可以是 qtree 或 tikz-qtree...
编辑:后续问题会很有用,当节点未标记时,如何使每个分支(在一条直线上)与众不同 - 即,当树有连续的多个连接时,如在第二个示例中一样,我怎样才能使它们彼此稍微间隔开,这样它们就不会形成一条无法区分的直线?
编辑2:感谢您的回复,我现在有这两棵树:
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}\footnotesize
\Tree [ \edge node[midway,left] {000};
[ \edge[draw=none]; {} \edge node[midway,right] {111};
[
\edge node[midway,left] {0}; $U_2$
\edge node[midway,right] {11};
[ \edge[draw=none]; {} \edge node[midway,right] {11};
[ \edge node[midway,left] {0}; $U_1$
\edge node[midway,right] {1}; $U_3$ ] ] ] ]
\edge[draw=none]; {} ]
\end{tikzpicture}
\begin{tikzpicture}\footnotesize
\Tree [ \edge node[midway,right] {$U_1=U_2$, $U_1=U_3$};
[.. \edge node[midway,right] {$U_1=U_2$, $U_1=U_3$};
[ \edge node[midway,left] {$0$}; $U_2$
\edge node[midway,right] {$U_1\not=U_2$, $U_1 = U_3$}; [
\edge node[midway, right] {$U_1 = U_3$};
[ \edge node[midway, left] {$0$}; $U_1$
\edge node[midway, right] {$U_1\not=U_3$}; $U_3$ ] ] ] ] ]
\end{tikzpicture}
\end{document}
有什么想法可以让它们看起来更好吗?
答案1
使用一个空节点{}
并\edge[draw=none];
在其前面放置一个。
代码
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\tikzset{
n/.style={draw=none},
every node/.append style={inner ysep=+0pt,outer ysep=+0pt,minimum size=+0pt}
}
\begin{document}
\Tree
[.{}
[.{}
\edge[n];[.{} ]
[.{}
{}
[.{}
\edge[n];[.{} ]
[.{}
{}
{}
]
]
]
]
\edge[n];{}
]
\end{document}
输出(未激活和every node
已激活样式)
答案2
您还可以使用xshift
(和yshift
) 来微调您希望节点所在的位置。
\documentclass[tikz]{standalone}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}\footnotesize
\Tree [.{a}
\edge node[midway,left] {1};
[.\node[xshift=0.5cm,inner sep=0pt,minimum size=0pt] {}; \edge node[midway,left] {2}; {c} ]
]
\end{tikzpicture}