如何添加缺失的箭头(微调图形)?

如何添加缺失的箭头(微调图形)?

我试图重现下图:

在此处输入图片描述

我几乎可以完全重现该图形,但我缺少箭头。这是我目前的尝试:

在此处输入图片描述

这是我当前身材的 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}

添加箭头

只需添加您想要的节点名称对并删除您不想要的节点名称对即可。完成后,注释掉用红色标记节点的行,因为您不会希望在最终版本中出现这种情况。

相关内容