在 pgfplots 中使用 rnd

在 pgfplots 中使用 rnd

以下代码由于使用而无法编译rnd

\documentclass{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{width=7cm,compat=1.3}
\begin{document}

\begin{tikzpicture}
\begin{axis}
\addplot {x};
    \draw [] (axis cs: 0,0)
      \foreach \i in {1,...,10} {
        -- ++ (axis direction cs: 0.2,rnd)
        };
   \end{axis}
\end{tikzpicture}
\end{document}

为什么会发生这种情况?如何重写它才能按预期工作?

答案1

这可能是由于坐标解析rnd不被识别为数学函数,而是被识别为非数字。使用括号或其他语法技巧可能会奏效,但对于这种简单的构造,最好避免使用它们。

这是一个从坐标解析中删除数学解析的选项。\pgfextra用于暂停解析并执行一些其他操作。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot {x};
    \draw [] (axis cs: 0,0)
      \foreach \i in {1,...,10} {\pgfextra{\pgfmathparse{rnd}}
        -- ++ (axis direction cs: 0.2,\pgfmathresult)
        };
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容