我确实意识到 pgfplots 需要在\end{axis}
应用缩放等方面发挥作用。但是有没有办法可以让它按预期工作?
在 MWE 中,我从宏中定义一个坐标(我的真实示例类似,但这应该涵盖它),我们在坐标处绘制一个点,更改宏,然后再次绘制。在我的系统上,我只在 (2,2) 处得到一个点。
是否存在某种我不知道的扩展技巧可以解决这个问题?(就我而言,我可以只创建路径交叉点,但这应该更快)
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmax=3,xmin=0,ymax=3,ymin=0
]
\draw (axis cs: 0,0) -- (axis cs:3,3);
\def\Test{1}
\coordinate (A) at (axis cs: \Test,\Test);
\fill (A) circle (2pt);
\def\Test{2}
\fill (A) circle (2pt);
\end{axis}
\end{tikzpicture}
\end{document}
答案1
最好的解决方案可能是使用这个技巧
\edef\temp{
\noexpand\coordinate (A) at (axis cs: \Test,\Test);
}
\temp
在处理环境的其他情况下也需要这样做axis
。
基本上,我们要求\Test
在定义坐标之前扩展宏,而不是在axis
稍后排版时扩展。