![在 for 循环中重置 tikzmath 变量](https://linux22.com/image/464787/%E5%9C%A8%20for%20%E5%BE%AA%E7%8E%AF%E4%B8%AD%E9%87%8D%E7%BD%AE%20tikzmath%20%E5%8F%98%E9%87%8F.png)
我想使用tikzmath
坐标绘制多条曲线(每条曲线都有不同的斜率):
\begin{tikzpicture}
\begin{axis}[
xmin=0,
xmax=1,
ymin=0,
ymax=1,
width=\textwidth,
height=\textwidth]
\tikzmath{
% coordinates
coordinate \p;
\p0 = (0.0,0.0);
for \slope in {0.5,1.0,1.5}{
% comptue value at 1
\p1 = (1.0, \slope);
{\draw (axis cs:\p0) -- (axis cs:1.0,\slope);};
};
}
\end{axis}
\end{tikzpicture}
然而,看起来只\slope
执行了最后一次迭代(= 1.5):
我想要绘制所有斜率:
我认为这是因为在每次迭代过程中值都\p1
没有被重新分配?
对于那些对我的特定用例感兴趣的人,我正在尝试绘制多重二次曲线。
答案1
现在,编辑后为了获得所需的结果,您可以将循环移到环境之外axis
,并使用\addplot
循环内的命令绘制每条曲线。这是更新后的代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0,
xmax=1,
ymin=0,
ymax=1,
width=\textwidth,
height=\textwidth
]
\foreach \slope/\color in {0.5/red, 1.0/green, 1.5/blue}{
\addplot [domain=0:1, \color] {(\slope) * x};
}
\end{axis}
\end{tikzpicture}
\end{document}
在此代码中,循环对和foreach
的值进行迭代,并且对于每次迭代,命令用于绘制具有指定斜率和颜色的曲线。选项设置曲线的 x 值范围。通过将循环移出环境,可以单独绘制每条曲线,并且它们都在结果图中可见。\slope
\color
\addplot
domain=0:1
axis