tikz 数组索引使用自定义调色板进行绘画

tikz 数组索引使用自定义调色板进行绘画

我有一个自定义调色板,我想通过索引来用它来绘画。

这是我的尝试:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\def\colorPallete{{0.00 0.00 0.52, 0.00 0.77 1.00, 1.00 0.98 0.00, 0.73 0.00 0.00}}

\foreach \x [count=\n] in {0,...,3}{%
\definecolor{currentColor}{rgb}{{\colorPallete[\x]}}
\fill [fill=currentColor] (\n,-2) circle[radius=.3];
}
\end{tikzpicture}
\end{document}

问题是解析器无法处理 rgb 三元组,因为如果我使用类似的数组索引来修改其他参数(如 int),则以下示例它会起作用。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\def\radiousCollection{{.1, .2, .3, .4}}
\foreach \x [count=\n] in {0,...,3}{%
\fill [fill=black] (\n,-2) circle[radius={\radiousCollection[\x]}];
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

一种可能的解决方法是将调色板的三个平面分成三个不同的数组,然后索引就像在放射状的情况下一样工作。

\documentclass{standalone}
\usepackage{tikz}
\begin{document}\tiny
\begin{tikzpicture}

\def\colorPalleteR{{0.00, 0.00, 1.00, 0.73}}
\def\colorPalleteG{{0.00,  0.77,  0.98,  0.00}}
\def\colorPalleteB{{1.0,  1.00,  0.00,0.00}}

\foreach \x [   count=\n,
            evaluate=\x as \myRval using ({\colorPalleteR[\x]}),
            evaluate=\x as \myGval using ({\colorPalleteG[\x]}),
            evaluate=\x as \myBval using ({\colorPalleteB[\x]}) ] in {0,...,3}{%

\definecolor{MyColor}{rgb}{\myRval,\myGval,\myBval}
\fill [fill=MyColor] (\n,0) circle[radius=.3];
\draw   (\n,.8) node {R=\myRval}
        (\n,.6) node {G=\myGval}
        (\n,.4) node {B=\myBval};
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

有人能解释一下如何使用才能正确解析向量,这样就不需要按平面分割调色板吗?

答案1

您只能在 tikz/pgf 中使用数组符号。definecolor不是来自此包。您可以使用它\pgfmathparse来解决这个问题:

\documentclass{standalone}
\usepackage{tikz}

\def\colorPallete{{"0.00 0.00 0.52", "0.00 0.77 1.00", "1.00 0.98 0.00", "0.73 0.00 0.00"}}


\begin{document}
    \begin{tikzpicture}
        \foreach \x [count=\n] in {0,...,3}{%
        \pgfmathparse{\colorPallete[\x]};
        \definecolor{currentColor}{rgb}{\pgfmathresult};
        \fill [fill=currentColor] (\n,-2) circle[radius=.3];
        }
    \end{tikzpicture}

\end{document}

结果

相关内容