在 for 循环中重置 tikzmath 变量

在 for 循环中重置 tikzmath 变量

我想使用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):

实际 LaTeX 输出

我想要绘制所有斜率:

预期的 LaTeX 输出

我认为这是因为在每次迭代过程中值都\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\addplotdomain=0:1axis

相关内容