使用 foreach 和 cs 坐标,foreach 评估和轴

使用 foreach 和 cs 坐标,foreach 评估和轴

我尝试使用轴 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}

在此处输入图片描述

相关内容