两个项目之间的向右和向左箭头

两个项目之间的向右和向左箭头

假设我想画一张图来展示从美国到加拿大的出口和进口情况,我尝试的代码是:

\begin{tikzpicture}
\node (a) at (0,0){USA};
\node (b) at (1,0){Canada}; 
\draw [->] (a)--node[above]{export}(b); 
\draw [->](b)--node[below]{import}(a);
\end{tikzpicture}

我知道这绝对是错误的,因为它只生成一个有两个头的箭头。我该如何修改此代码?

答案1

欢迎使用 TeX.SE。您可以使用to运算符及其bend leftbend right选项。此运算符接受其他选项,例如looseness控制曲率,in以及out控制起始和终止角度,例如这里。有关可用选项的更多信息,您可以/tikz/curve to查看Z & PGF 手册(本手册 3.1.5b 版本第 838 页)。

\documentclass[tikz, border=2mm]{standalone}

\begin{document}

\begin{tikzpicture}[scale=3]
\node (a) at (0,0) {USA};
\node (b) at (1,0) {Canada};
\draw[->] (a) to[bend left=20] node[above] {export} (b);
\draw[->] (b) to[bend left=20] node[below] {import} (a);
\end{tikzpicture}

\end{document}

在此处输入图片描述

如果省略[bend left=20]箭头,或使用[bend left=0][bend right=0],TiZ 将绘制一条直线(一个线段)。

如果要移动此类箭头,我认为您需要在每个节点a和上选择一个锚点b,以便移动的点是众所周知的。例如,如果我选择锚点a.30(30 是极角的度数)和b.150(150 = 180 - 30 表示对称),将这些点向上移动0.1cm并增加上箭头的曲率,我们得到:

\documentclass[tikz, border=2mm]{standalone}

\begin{document}

\begin{tikzpicture}[scale=3]
\node (a) at (0,0) {USA};
\node (b) at (1,0) {Canada};
\draw[->] ([yshift=0.1cm]a.30) to[bend left=40] node[above] {export}
          ([yshift=0.1cm]b.150);
\draw[->] (b) to[bend left=20] node[below] {import} (a);
\end{tikzpicture}

\end{document}

在此处输入图片描述

yshift当然,负值会向下移动。

绘制弯曲箭头的另一种可能性是使用..运算符,但它可能有点困难,因为您需要提供适当的控制点。

答案2

@frougon 答案的一个小变化。使用包arrows.metapositioningquotes的 MWE 图表可以是:

\documentclass[tikz, margin=2mm]{standalone}
\usetikzlibrary{arrows.meta,
                positioning,
                quotes}

\begin{document}
    \begin{tikzpicture}[
    node distance = 22mm,
every edge/.style = {draw, -Straight Barb, bend left=15},
                        ]
\node (a)               {USA};
\node (b) [right=of a]  {Canada};
\draw   (a) edge["export"] (b)
        (b) edge["import"] (a);
    \end{tikzpicture}

    \begin{tikzpicture}[
node distance = 22mm,
    LA/.style = {draw, -Straight Barb, transform canvas={yshift=#1}},
every edge quotes/.append style = {font=\small, inner sep=1pt}
                        ]
\node (a)               {USA};
\node (b) [right=of a]  {Canada};
\draw   (a) edge[LA=+2pt,"export"] (b)
        (b) edge[LA=-2pt,"import"] (a);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容