![具有常见子项的 Latex 树形图](https://linux22.com/image/470524/%E5%85%B7%E6%9C%89%E5%B8%B8%E8%A7%81%E5%AD%90%E9%A1%B9%E7%9A%84%20Latex%20%E6%A0%91%E5%BD%A2%E5%9B%BE.png)
我有以下树状图(标题中指定的包)。
\usepackage{tikz}
\usetikzlibrary{trees}
\usepackage{tikz-cd}
% Set the overall layout of the tree
\tikzstyle{level 1}=[level distance=3.5cm, sibling distance=3.5cm]
\tikzstyle{level 2}=[level distance=3.5cm, sibling distance=2cm]
% Define styles for bags and leafs
\tikzstyle{bag} = [text width=4em, text centered]
\tikzstyle{end} = [circle, minimum width=3pt,fill, inner sep=0pt]
\begin{tikzpicture}[grow=right]
\node[bag] {Start}
child {
node[bag] {\euro -$1$}
child {
node[end, label=right:
{\euro -$2$}] {}
edge from parent
node[above] {$1$}
node[below] {}
}
child {
node[end, label=right:
{\euro $0$}] {}
edge from parent
node[above] {$1$}
node[below] {}
}
edge from parent
node[above] {$\frac{1}{2}$}
node[below] {}
}
child {
node[bag] {\euro $1$}
child {
node[end, label=right:
{\euro $0$}] {}
edge from parent
node[above] {$1$}
node[below] {}
}
child {
node[end, label=right:
{\euro $2$}] {}
edge from parent
node[above] {$1$}
node[below] {}
}
edge from parent
node[above] {$\frac{1}{2}$}
node[below] {}
};
\end{tikzpicture}
我获得以下布局:
但是,我希望两个 €0 连接在一起。也就是说,只有一个 €0,然后中间的箭头指向中间唯一的 €0。换句话说,我希望有一棵树,中间点有共同的子节点。我真的到处搜索,但没有成功,另一方面,这似乎应该可以通过稍微调整代码轻松实现。
谢谢任何提示或建议!
答案1
对于像这样的简单图表,这里有一种使用基本方法来实现的方法Tikz
。
基本思想:
- 使用,它的作用类似于定位节点的
\matrix
表格Tikz
- 这个有 3 列 (
&
&
\\
) 和 5 行 - 某些字段故意留空
- 将包含类似内容的节点放在需要的地方
- 分配
(S)
等(A1)
以便稍后再次引用它们的坐标 - 为了简单起见,我使用“e”来保持矩阵/表格结构可见
- 使用
column sep
并row sep
进行视觉微调
母校毕业后x,放置完所有带有文本的节点后,进行一些绘图,例如
\draw (S) -- (A1);
% 在节点 S 和 A1 之间画一条线\draw (S) -- node[above] {$\frac{1}{2}$} (A1);
% 相同,但在该行附近添加一些文本
你可能想要查找手册:
- 第三个教程,“5.3 使用矩阵对齐节点”
- 边缘作为放置标签的替代方案
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\matrix[column sep=12mm,
row sep=4mm]{
& & \node(B1) {$e_2$};\\
& \node(A1) {$e_1$}; &\\
\node(S) {Start}; & & \node(B2) {$e_0$};\\
& \node(A2) {$e_{-1}$}; &\\
& & \node(B3) {$e_{-2}$};\\
};
\draw (S) -- node[above] {$\frac{1}{2}$} (A1);
\draw (S) -- node[above] {$\frac{1}{2}$} (A2);
\draw (A1) -- node[above] {$\frac{1}{3}$} (B1);
\draw (A1) -- node[above] {$\frac{2}{3}$} (B2);
\draw (A2) -- node[below] {$\frac{1}{4}$} (B2);
\draw (A2) -- node[below] {$\frac{3}{4}$} (B3);
\end{tikzpicture}
\end{document}