逐渐改变 foreach 中绘制的几个 pgfplots 函数的颜色

逐渐改变 foreach 中绘制的几个 pgfplots 函数的颜色

http://i.imgur.com/Eul9nq0.png?1

在回答这个问题我实际上发现自己不知道如何解决以下问题。

在下面的代码中,我处理了许多图表,我打算根据我使用的图表数量逐渐改变颜色。答案不必是充分自动(虽然这会很好),但我最终无法迭代地逐渐改变每个连续图的颜色。

我尝试了一些方法,例如:

\foreach \w in {.05,.1,...,1}
{
\pgfmathparse{100*\w}
\xdef\x{\pgfmathresult}
\addplot[blue!\x!white] {(4.9/(\w^2))*(cosh(\w*x)-cos(\w*x))};
}

结果:代码可以编译,但是没有为每个图使用正确的颜色。

我也尝试将\w其用作可选参数的直接参数addplot,但它并没有真正做任何事情,

\foreach \w in {.05,.1,...,1}
{
\addplot[blue!\w!white] {(4.9/(\w^2))*(cosh(\w*x)-cos(\w*x))};
}

foreach我还可以以某种方式尝试在每个循环中向 pgfplots添加更多颜色cyclelist(我想),但我找不到任何命令或代码来执行此操作。

所以我想问一下:如何避免必要的 20 行长度pgfplotscyclelist并更高效地编写这段代码?

\documentclass{standalone}
\usepackage{pgfplots}

\def\mycolone{yellow}
\def\mycoltwo{green}

\pgfplotscreateplotcyclelist{mycolorlist}{%
\mycolone!95!\mycoltwo\\%
\mycolone!90!\mycoltwo\\%
\mycolone!85!\mycoltwo\\%
\mycolone!80!\mycoltwo\\%
\mycolone!75!\mycoltwo\\%
\mycolone!70!\mycoltwo\\%
\mycolone!65!\mycoltwo\\%
\mycolone!60!\mycoltwo\\%
\mycolone!55!\mycoltwo\\%
\mycolone!50!\mycoltwo\\%
\mycolone!45!\mycoltwo\\%
\mycolone!40!\mycoltwo\\%
\mycolone!35!\mycoltwo\\%
\mycolone!30!\mycoltwo\\%
\mycolone!25!\mycoltwo\\%
\mycolone!20!\mycoltwo\\%
\mycolone!15!\mycoltwo\\%
\mycolone!10!\mycoltwo\\%
\mycolone!5!\mycoltwo\\%
}

%\pgfplotsset{every axis legend/.append style={
%at={(.5,-.2)},
%anchor=north}} 

\begin{document}
\begin{tikzpicture} 
\begin{axis}[xmin=-5,xmax=5,ymin=-0.5,ymax=100,no markers, grid=both,cycle list name=mycolorlist]
\foreach \w in {.05,.1,...,1} {
\addplot {(4.9/(\w^2))*(cosh(\w*x)-cos(\w*x))};
%\edef\legendentry{\noexpand\addlegendentry{$\omega =\noexpand\pgfmathprintnumber[fixed,fixed zerofill, precision=2]{\w}$}};
%       \legendentry
}
\end{axis}
\end{tikzpicture}
\end{document}

答案1

\documentclass{standalone}
\usepackage{pgfplots}

\def\mycolone{yellow}
\def\mycoltwo{green}

%\pgfplotsset{every axis legend/.append style={
%at={(.5,-.2)},
%anchor=north}} 

\begin{document}
\begin{tikzpicture} 
\begin{axis}[xmin=-5,xmax=5,ymin=-0.5,ymax=100,no markers, grid=both]
\foreach \w in {5,10,...,100} {
\edef\tmp{\noexpand\addplot[\mycolone!\w!\mycoltwo]}
\tmp{(4.9/((\w/100)^2))*(cosh(\w*x/100)-cos(\w*x/100))};
%\edef\legendentry{\noexpand\addlegendentry{$\omega =\noexpand\pgfmathprintnumber[fixed,fixed zerofill, precision=2]{\w}$}};
%       \legendentry
}
\end{axis}
\end{tikzpicture}
\end{document}

相关内容