在轴环境中以随机颜色绘图

在轴环境中以随机颜色绘图

我想要在一个 TikZ 轴环境中绘制许多(准确地说是 50 个)函数(如果你想知道的话,布朗运动),每条线都有不同的随机选择的颜色。

我成功做到了,但我对自己的做法很不满意,我敢打赌肯定有更高效/更漂亮/更简洁的方法。我的解决方案是使用 Matlab 创建一个随机颜色图,其中包含很多颜色。但这让我不得不写一大堆东西,我相信这可以更轻松地完成。

这是我使用的代码,为了简单起见,这里使用了 3 个文件。

\documentclass{beamer}
\usepackage{pgfplots}

\begin{filecontents*}{file1.plot}
0 0
1 1
2 2
3 1
4 0
\end{filecontents*}
\begin{filecontents*}{file2.plot}
0 1
1 3
2 5
3 3
4 1
\end{filecontents*}
\begin{filecontents*}{file3.plot}
0 2
1 5
2 7
3 5
4 2
\end{filecontents*}

\begin{document}
\frame{
\begin{tikzpicture}[scale=.8]
\pgfplotsset{/pgfplots/colormap={rndcm}{rgb255=(204,41,26)rgb255=(74,148,66)rgb255=(66,127,234)rgb255=(85,47,111)rgb255=(112,36,137)rgb255=(6,175,58)rgb255=(5,47,165)rgb255=(164,174,225)rgb255=(86,138,183)rgb255=(203,114,174)rgb255=(219,140,254)rgb255=(183,141,85)rgb255=(239,188,220)rgb255=(160,68,52)rgb255=(178,143,23)rgb255=(131,96,248)rgb255=(25,70,14)rgb255=(6,49,203)rgb255=(75,128,101)rgb255=(22,54,42)}
}
\begin{axis}
\foreach \j in {1,2,3}
{
    \addplot [no markers, point meta=explicit, mesh] table [meta expr=\j] {file\j.plot};
}
\end{axis}
\end{tikzpicture}
}
\end{document}

我尝试着

\pgfmathparse{rnd}
\xdefinecolor{RndColour}{hsb}{\pgfmathresult, 1, 1}
\addplot [no markers, point meta=explicit, color = RndColour] table [meta expr=\j] {file\j.plot};

在循环内\foreach,但它抱怨说

RndColour未定义

(请注意,我可以在 foreach 循环之外以这种方式定义随机颜色,但每一行都是相同的颜色。)

所以,问题是:这是否是一种用比我的代码更好的方法来实现我想要的功能的方法?我猜答案是“是”。所以,真正的问题是:如何做到这一点?

根据记录,我用我的重型佳能解决方案得到的是这样的,它看起来非常符合我的要求:

在此处输入图片描述

答案1

我认为你需要的是cycle list。手册中的示例

\documentclass{beamer}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
stack plots=y,stack dir=minus,
cycle list name=color list]
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\addplot coordinates {(0,1) (0.5,1) (1,1)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如果您对预定义的颜色列表不满意,您可以定义自己的颜色列表。

相关内容