这不是重复的这个问题。它与它非常相关,但解决了一个扩大所讨论的问题。
话虽如此,让我解释一下为什么这是一个不同的问题。我想在以下\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}