我正在尝试绘制函数序列中的前几个函数。目前我的代码如下所示:
\begin{center}
\begin{tikzpicture}
\begin{axis}[axis lines = left,
xlabel = $x$,
ylabel = $y$,
xmin = 0,
xmax=10,
ymin=-0.1,
ymax = 0.4,
legend pos = outer north east];
\addplot[domain=0:10, samples=100, color=gray, dashed]{sqrt(2)/2*exp(-pi/4)};
\addlegendentry{$\sup_{x\in I}\card{f_n}$}
\foreach \n in {1,2,...,7}{
\addplot [domain=0:10, samples=500, color=red]{sin(deg(\n*x))*exp(-\n*x)};
}
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
但正如您在代码中看到的那样,每个图都是红色的。有没有办法让每个函数都用不同的颜色绘制,同时仍然用循环绘制它们?同样,我可以为每个函数添加一个图例条目,如 f_1(x)、f_2(x)、...、f_7(x) 循环?此处讨论了更改每个图的颜色在 \foreach 循环中更改 \addplot 的颜色(pgfplots)但我无法理解他们所做的工作,我实际上并不了解一切(即 \edef 或 \noexpand 或 \temp 的作用),而且我不一定需要颜色渐变,只要颜色不同,随机颜色也可以。我有一段时间没用过 pgfplots 了,我不太清楚该怎么做。任何帮助都非常感谢。
答案1
对于foreach
循环,pgfplots
您必须noexpand
为每个表达式添加。使用该evaluate
命令,您可以根据循环变量计算一个值。
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=left,
xlabel=$x$,
ylabel=$y$,
xmin=0,
xmax=10,
ymin=-0.1,
ymax=0.4,
legend pos=outer north east];
\addplot[
domain=0:10,
samples=100,
color=gray,
dashed,
]{sqrt(2)/2*exp(-pi/4)};
% \addlegendentry{$\sup_{x\in I}\card{f_n}$} %<-causing some error
\foreach [evaluate=\i as \n using (\i)*100/(7)] \i in {1,2,...,7} {%
\edef\temp{%
\noexpand
\addplot[
domain=0:10,
samples=500,
color=red!\n!blue,
smooth,
]
{sin(deg(\i*x))*exp(-\i*x)};
}\temp
}
\end{axis}
\end{tikzpicture}
\end{document}