我试图重现下图:
我几乎可以完全重现该图形,但我缺少箭头。这是我目前的尝试:
这是我当前身材的 MWE:
\documentclass[margin=1pt]{standalone}
\usepackage{tikz} % To plot almost everything.
\usetikzlibrary{fit, calc, matrix, positioning, arrows.meta, intersections, through, backgrounds, patterns}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\coordinate (c) at (3,4);
\coordinate (d) at (9,4);
\coordinate (e) at (3,-4);
\draw[cap=round,black!100,] (a) -- (b) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{Chris}}};
\draw[cap=round,black!100,] (b) -- (c) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{Barbara}}};
\draw[cap=round,black!100,] (a) -- (c) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{John}}};
\draw[cap=round,black!100,] (c) -- (d) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{Chris}}};
\draw[cap=round,black!100,] (d) -- (b) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{John}}};
\draw[cap=round,black!100,] (a) -- (e) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{John}}};
\draw[cap=round,black!100,] (e) -- (b) node[pos=1/3,fill=white,rectangle,]{\footnotesize{Stay}} node[pos=2/3,fill=white,rectangle,]{\footnotesize{Go}} node[pos=1/2,rectangle,fill=white]{\footnotesize{\textbf{Barbara}}};
\end{tikzpicture}
\end{document}
有人知道如何添加箭头吗?
注意:我不想匹配参考图的整体风格,我只想添加箭头。
非常感谢大家抽出时间。
答案1
有几件事:
\footnotesize
是一个开关,因此\footnotesize{abc} d
与 相同\footnotesize abc d
。要限制范围,您需要在开关周围使用花括号,{\footnotesize abc d}
但这并不重要,因为无论如何您都位于一个节点中。尝试使用样式,而不是一遍又一遍地重复相同的设置,因为如果需要的话,它可以更轻松地稍后调整代码。
您还可以使用循环来重复相同的代码,但略作改动。
节点可以像坐标一样命名,
\node (<node name>) {<node text>};
或者\path ... node (<node name>) {<node text>} ...
。
例如,以下内容为您的示例添加了一些箭头并实现了上述建议。
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
[
cap=round,
every node/.append style={fill=white, font=\footnotesize},
]
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\coordinate (c) at (3,4);
\coordinate (d) at (9,4);
\coordinate (e) at (3,-4);
\foreach \i/\j/\k [count=\n] in {a/b/Chris,b/c/Barbara,a/c/John,c/d/Chris,d/b/John,a/e/John,e/b/Barbara}
\draw (\i) -- (\j) node (s-\n) [pos=1/3] {Stay} node (g-\n) [pos=2/3] {Go} node (p-\n) [pos=1/2] {\textbf{\k}};
% uncomment this line to show node names; comment for final version
\foreach \i in {1,...,7} \foreach \j in {g,s,p} \node [font=\tiny\sffamily, inner sep=0pt, text=red, anchor=-135] at (\j-\i.45) {\j-\i};
\foreach \i/\j in {g-2/s-4,g-2/s-5,g-3/g-2,g-3/g-1,s-3/s-2,s-3/s-1,g-1/g-6,g-1/g-7} \draw [-Latex] (\i) -- (\j);
\end{tikzpicture}
\end{document}
只需添加您想要的节点名称对并删除您不想要的节点名称对即可。完成后,注释掉用红色标记节点的行,因为您不会希望在最终版本中出现这种情况。