如果我使用以下方式创建两条曲线pgf图我可以在两者之间划一条线相对地在每个曲线上定位节点。在这个例子中,每条曲线 50% 处的点之间有一个箭头。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[]
\addplot[color=black,mark=square*] table {
x y
1 1
2 2
3 3
}
node [pos=0.5,inner sep=0pt,outer sep=0pt] (A) {};
\addplot[color=black,mark=square*] table {
x y
1 2
2 3
}
;
\addplot[color=black,mark=square*] table {
x y
2 1
3 2
}
node [pos=0.5,inner sep=0pt,outer sep=0pt] (B) {};
\draw[latex-latex] (A) -- (B);
\end{axis}
\end{tikzpicture}
\end{document}
但是我怎样才能只设置一个节点并让第二个和第三个节点投影在每个轴上呢?
以及如何获取相对于曲线上设置的轴外的节点?
所以基本上我正在寻找红色节点如下图所示,红线和绿线?
有什么帮助吗?有一些问题可以解决我的问题,但它们都针对不同的事情,我错过了关键部分。
答案1
您可以使用rel axis cs
内部axis
绘制绿线并在投影点处设置命名坐标。
\draw[green,very thick]
(A|-{rel axis cs:0,0})coordinate(Ax)--(A)--({rel axis cs:0,0}|-A)coordinate(Ay);
然后,您就可以在 外面绘制红色节点和线条axis
。
\draw[red,very thick]
(Ax)node{\pgfuseplotmark{square*}}--+(0,-5mm)node{\pgfuseplotmark{square*}}
(Ay)node{\pgfuseplotmark{square*}}--+(-5mm,0)node{\pgfuseplotmark{square*}};
代码:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}% loads also tikz
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[color=black,mark=square*] table {
x y
1 1
2 2
3 3
}
node [pos=0.5,inner sep=0pt,outer sep=0pt] (A) {};
\addplot[color=black,mark=square*] table {
x y
1 2
2 3
}
;
\addplot[color=black,mark=square*] table {
x y
2 1
3 2
}
node [pos=0.5,inner sep=0pt,outer sep=0pt] (B) {};
\draw[latex-latex] (A) -- (B);
\draw[green,very thick]
(A|-{rel axis cs:0,0})coordinate(Ax)--(A)--({rel axis cs:0,0}|-A)coordinate(Ay);
\end{axis}
\draw[red,very thick]
(Ax)node{\pgfuseplotmark{square*}}--+(0,-5mm)node{\pgfuseplotmark{square*}}
(Ay)node{\pgfuseplotmark{square*}}--+(-5mm,0)node{\pgfuseplotmark{square*}};
\end{tikzpicture}
\end{document}