我有一个自定义调色板,我想通过索引来用它来绘画。
这是我的尝试:
\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}