如何巧妙地计算 pgfplots 轴内的许多坐标?

如何巧妙地计算 pgfplots 轴内的许多坐标?

我想要的是

通缉

可以通过以下代码绘制。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
            \pgfmathsetmacro{\myresultA}{1}
            \fill (\myresultA,0) circle [radius=5pt];
            \pgfmathsetmacro{\myresultB}{2}
            \fill (\myresultB,0) circle [radius=5pt];
            \pgfmathsetmacro{\myresultC}{3}
            \fill (\myresultC,0) circle [radius=5pt];
            % Many more \fill and \draw commands which require unique coordinate calculation here
        \end{axis}
    \end{tikzpicture}
\end{document}

我想避免为每个 pgfmath 计算使用单独的变量名,因为我有很多计算需要计算。不幸的是,代码

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
            \pgfmathsetmacro{\myresult}{1}
            \fill (\myresult,0) circle [radius=5pt];
            \pgfmathsetmacro{\myresult}{2}
            \fill (\myresult,0) circle [radius=5pt];
            \pgfmathsetmacro{\myresult}{3}
            \fill (\myresult,0) circle [radius=5pt];
            % Many more \fill and \draw commands which require unique coordinate calculation here
        \end{axis}
    \end{tikzpicture}
\end{document}

只是给我

失败的

如何在没有单独结果变量的情况下进行大量计算?更好的方法是不使用任何结果变量进行内联计算?有没有什么巧妙的方法?当然,这只是我真正喜欢画的一个小例子。所以我的问题更多的是概念性的。

答案1

我不是 pgfplots 专家,但看起来 pgfplots 延迟了该\fill命令。因此它首先运行这三个命令\pgfmathsetmacro,然后运行这三个\fill命令。

\pgfextra为了解决这个问题,你可以像这样进行计算:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[xmin=0, xmax=4, ymin=-1, ymax=1]
            \fill \pgfextra{\pgfmathsetmacro{\myresult}{1}}
              (\myresult,0) circle [radius=5pt];
            \fill \pgfextra{\pgfmathsetmacro{\myresult}{2}}
              (\myresult,0) circle [radius=5pt];
            \fill \pgfextra{\pgfmathsetmacro{\myresult}{3}}
              (\myresult,0) circle [radius=5pt];
        \end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容