使用带箭头的相对坐标

使用带箭头的相对坐标

我的问题与此类似:使用 tikz 在节点之间绘制箭头

我想使用相对坐标绘制几条带箭头的线。我期望该命令 \draw (axis cs:0,0) edge[->] ++(axis direction cs:-2,0) edge[->] ++(axis direction cs:0,1); 产生以下图(左图),但得到的却是右图。

在此处输入图片描述

++然而,虽然使用了,坐标并没有从原点移动。MWE:

\documentclass[a4paper]{article} 
\usepackage{pgfplots} 

\begin{document}
\begin{tikzpicture}%
  \begin{axis}[title={want},axis lines=middle,xmin=-3, xmax=1, ymin=-2, ymax=3,]
    % This is the result I want
    \draw[green,->] (axis cs:0,0) -- ++(axis direction cs:-2,0);
    \draw[green,->] (axis cs:-2,0) -- ++(axis direction cs:0,1);
  \end{axis}
  \begin{axis}[xshift=7cm, axis lines=middle, title={got},xmin=-3, xmax=1, ymin=-2, ymax=3,]
    % I want to use multiple relative coordinates in one command as in the following:
    \draw[red] (axis cs:0,0) edge[->] ++(axis direction cs:-2,0) edge[->] ++(axis direction cs:0,1);
  \end{axis}
\end{tikzpicture}%
\end{document}

答案1

使用 PGFPlots 时始终设置compat级别。不要写axis cs:- 这是默认坐标系。

edge开始一条新路径,因此++不会有任何帮助。这是正常的 TikZ 行为 - 不仅仅是 PGFPlots。我不知道你想实现什么,所以不能说什么是最好的方法。它可能是一个\addplot循环\foreach(或 PGFPlot 友好版本)。-或者干脆放弃不指定下一个箭头的起点的想法(就像你给出的链接一样)。

以下是仅使用您指定的两个点的一种方法:

\documentclass[tikz, border=1cm]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle, xmin=-3, xmax=1, ymin=-2, ymax=3,]
\draw[red, thick, ->] (0,0) edge +(axis direction cs:-2,0) \pgfextra{\pgfgetlastxy{\macrox}{\macroy}} (\macrox,\macroy) -- +(axis direction cs:0,1);
\end{axis}
\end{tikzpicture}
\end{document}

坐标系中的两个箭头

相关内容