我想模仿图片中的树,但我无法从 tikz 手册中理解如何做一些事情:
- 对齐线(不应从节点的上部中心开始)
- 完美的平方线:我希望所有的角度都是 90°:现在我只需使用命令来近似它们
\tikzstyle{level 1}=[level distance=14mm,sibling distance=25mm]
。 - 我希望虚线以一条小连续线开始,并可能以 h_i 标签下的一个点结束:我尝试在右上角添加另一个(空)节点,但这样连续线就太长了。
我该如何进行这些编辑?
任何帮助将不胜感激。
这是我的 MWE
\documentclass[11pt,a4paper]{article}
\usepackage{tikz}
\usepackage{tikz-qtree}
\begin{document}
\begin{tikzpicture}[scale=1,font=\footnotesize]
\tikzset{
solid node/.style={circle,draw,inner sep=1,fill=black},
hollow node/.style={}
}
\tikzstyle{level 1}=[level distance=14mm,sibling distance=25mm]
\node[solid node,label=right:{$\phi$},label=left:{$t_0$}]{} [grow=up]
child {node[solid node,label=right:{$\phi$}] {}
child {node[solid node,label=right:{$\phi$}]{}
child {node[solid node,label=right:{$\phi$}]{}
child{
%node[solid node,label=right:{$\phi$}] {}
child{node[hollow node,label=45:{$h_\omega$}] {} edge from parent[dashed]}
child[missing]
}
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[hollow node,label=135:{$h_3$}] {} edge from parent[dashed]
}
}
}
}
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[hollow node,label=135:{$h_2$}] {} edge from parent[dashed]
}
}
}
}
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[hollow node,label=135:{$h_1$}] {} edge from parent[dashed]
}
}
}
}
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[solid node,label=right:{$\neg\phi$}] {}
child[missing]
child {node[hollow node,label=135:{$h_0$}] {} edge from parent[dashed]
}
}
};
\end{tikzpicture}
\end{document}
答案1
我不会使用tikz-qtree
如此简单的图表。
我建议你采用\foreach
一个普通的定位解决方案:
\documentclass[11pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{positioning, calc}
\begin{document}
\begin{tikzpicture}[font=\footnotesize,
every node/.style={circle,draw,inner sep=1,fill=black}]
\node[label=right:{$\phi$},label=left:{$t_{0}$}](p0){};
\foreach \i [evaluate=\i as \j using int(\i - 1)] in {1,2,3} {
\node[label=below right:{$\phi$}, above right= of p\j](p\i){};
\draw (p\j) -- (p\i);
}
\node[above right= of p3, label=above right:{$h_{\omega}$}] (p4) {};
\draw (p3) -- ($(p3)!0.3!(p4)$) edge[dashed] (p4);
\foreach \i in {0,1,2,3}{
\coordinate (pl0\i) at (p\i);
\foreach \il [evaluate=\il as \jl using int(\il - 1)] in {1,2} {
\node[label={$\neg\phi$}, above left= of pl\jl\i](pl\il\i){};
\draw (pl\jl\i) -- (pl\il\i);
}
\node[above left= of pl2\i, label=above left:{$h_{\i}$}] (end\i) {};
\draw (pl2\i) -- ($(pl2\i)!0.3!(end\i)$) edge[dashed] (end\i);
}
\end{tikzpicture}
\end{document}