请注意这个 MWE(compat
位于 1.13,因此默认坐标位于axis cs:
):
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}[
]
\begin{axis}[
xmin=0, xmax=1500,
ymin=60, ymax=100,
axis y line* = right,
axis x line = none,
clip mode = individual,
]
%\addplot [domain=0:1500] {97-x/150};
\addplot [domain=0:1500] {x/15};
\draw [green, <-] (600, 93) -- ++(0,-1.5);
\draw [red, <-] (600, 93) -- (600, 93-1.5);
\end{axis}
\end{tikzpicture}
\end{document}
这两个draw
命令执行完美,并且它们给出相同的箭头,因此您实际上只看到一个:
如果您现在注释掉\addplot
并使用前一个,即像这样:
\addplot [domain=0:1500] {97-x/150};
%\addplot [domain=0:1500] {x/15};
相对坐标\draw
出错:
我的错在哪里?是不是相对运动不应该起作用axis cs:
?为什么它取决于之前的情节?
答案1
axis cs
仅允许绝对位置。如果需要相对位置,则必须使用axis direction cs
:
\draw [green, <-] (600, 93) -- ++(axis direction cs:0,-1.5);
有关更多信息,请参阅 pgfplots 文档中的“4.17.1 访问图形元素中的轴坐标”部分。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}\pgfplotsset{compat=1.13}
\begin{document}
\begin{tikzpicture}[
]
\begin{axis}[
xmin=0, xmax=1500,
ymin=60, ymax=100,
axis y line* = right,
axis x line = none,
clip mode = individual,
]
\addplot [domain=0:1500] {97-x/150};
%\addplot [domain=0:1500] {x/15};
\draw [green, <-] (600, 93) -- ++(axis direction cs:0,-1.5);
\draw [red, <-] (600, 93) -- (600, 93-1.5);
\end{axis}
\end{tikzpicture}
\end{document}
结果是