在 pgfplots 中的 \foreach 内计算坐标表达式

在 pgfplots 中的 \foreach 内计算坐标表达式

这不是重复的这个问题。它与它非常相关,但解决了一个扩大所讨论的问题。

话虽如此,让我解释一下为什么这是一个不同的问题。我想在以下\foreach语句中使用,变量函数的不同表达方式\x\x其本身,\x加 1,以及 1 除以\x

如果我只需要两个表达式,我会实现上面链接问题中显示的解决方案;但是,据我所知,标签evaluate只能将一个待评估表达式分配给一个宏(变量)。

我已经尝试了几种方法。我尝试使用\tikzmath命令,尝试使用\the\numexpr表达式,但两种情况下我都会收到大量错误消息。

以下是使用的代码\tikzmath

\begin{tikzpicture}
\begin{axis}[
]

    \foreach \x [evaluate=\x as \xnext using int(\x+1)] in {1,2,...,10}
        {\tikzmath{\y=1/\x;};
            \addplot[patch,patch type=rectangle] 
            coordinates {
                (\x,0) (\xnext,0) (\xnext,\y) (\x,\y)
            };}

    \addplot[
        domain=0.5:11,
        samples=200
    ]
        {1/x}
\end{axis}
\end{tikzpicture}

以下是使用的代码\the\numexpr

\begin{tikzpicture}
\begin{axis}[
]

    \foreach \x [evaluate=\x as \xnext using int(\x+1)] in {1,2,...,10}
        {\addplot[patch,patch type=rectangle] 
            coordinates {
                (\x,0) (\xnext,0) (\xnext,{\the\numexpr #1/\x}) (\x,{\the\numexpr #1/\x})
            };}

    \addplot[
        domain=0.5:11,
        samples=200
    ]
        {1/x};
\end{axis}
\end{tikzpicture}

有办法实现这个吗?

答案1

存在一些问题:奇怪的评估语法,\pgfmath\pgfmathsetmacro不是缺少分号。

\documentclass[tikz,border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
]

    \foreach \X [evaluate={\xnext=int(\X+1)}] in {1,2,...,10}
        {  \pgfmathsetmacro{\y}{1/\X}     
        \addplot[patch,patch type=rectangle] 
            coordinates {
                (\X,0) (\xnext,0) (\xnext,\y) (\X,\y)
            };}

    \addplot[
        domain=0.5:11,
        samples=200
    ]
        {1/x};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容