我尝试使用轴 cs 坐标在 pgfplots 轴上绘制点。手动输入坐标时,这种方法很有效,但当我尝试使用来自 foreach 语句的值时,就会失败。请参阅下面的 MWE。有什么想法可以解决这个问题吗?我尝试使用花括号,即使只是没有任何计算的整数似乎也会带来问题。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach \s in {0,0.25,0.5} {
\fill (axis cs:\s,0.5) circle (1.5pt);
}
\addplot[domain=0:1] {x};
\end{axis}
\end{tikzpicture}
\end{document}
事实上,当我使用 foreach 的评估选项时,我也遇到了一个问题,请参阅下面的 MWE。知道这里的问题是什么吗?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach \x [evaluate=\x as \s using \x*10] in {0,1,..,10} {
%
}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
的值\s
必须预先扩展。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\foreach \s in {0,0.25,0.5} {
\edef\tmp{(axis cs:\s,0.5)}%
\expandafter\fill\tmp circle (1.5pt);
}
\addplot[domain=0:1] {x};
\end{axis}
\end{tikzpicture}
\end{document}