在 tikzpicture 中挑选一种颜色

在 tikzpicture 中挑选一种颜色

我想扩展此代码片段

\newcommand\progskills[1]{ 
    \renewcommand{\progskills}{
        \begin{tikzpicture}
        %\node [above right] at (0, 4) {$0 \: LOC \: \arrow{3.2} \: 5000 \: LOC$};
        \foreach [count=\i] \x/\y in {#1}{
            \draw[fill=maingray,maingray] (0,\i) rectangle (6,\i+0.4);
            \draw[fill=white,mainblue](0,\i) rectangle (\y,\i+0.4);
            \node [above right] at (0,\i+0.35) {\x};
        }
        \end{tikzpicture}
    }
}

循环显示颜色列表。在 Python-Matplotlib 中,我会使用例如itertools.cycle颜色数组并索引该数组。如何使用 latex 和 tkzpicture 实现这种行为?

以下简单代码片段不起作用。该命令创建“技能栏”,并源自二十秒简历

\newcommand\labskills[1]{ 
    \renewcommand{\labskills}{
        \begin{tikzpicture}
        \def\mycolors{lightgray, materialcyan, orange, green, materialorange, materialteal, materialamber, materialindigo, materialgreen, materiallime}
        %\node [above right] at (0, 4) {$0 \: LOC \: \arrow{3.2} \: 5000 \: LOC$};

        \foreach [count=\i] \x/\y in {#1}{
            \draw[fill=maingray,maingray] (0,\i) rectangle (6,\i+0.4);
            \draw[fill=white, \mycolors[\i]](0,\i) rectangle (\y,\i+0.4);
            \node [above right] at (0,\i+0.35) {\x};
        }
        \end{tikzpicture}
    }
}

答案1

不幸的是,您只发布了片段。这是一个通用示例,没有使用您的颜色或宏,因为从您的问题来看,不清楚它们是如何定义的。如果您在条目周围用引号定义颜色列表,

\def\mycolors{"red","blue","purple"}

你可以通过以下方式循环显示颜色

\pgfmathsetmacro{\mycolor}{{\mycolors}[Mod(\i-1,3)]}

其中3是上述列表的长度。以下是一个完整的可编译示例。

\documentclass{article}
\usepackage{tikz}
\newcommand\labskills[1]{ 
        \begin{tikzpicture}
        \def\mycolors{"red","blue","purple"}
        \foreach [count=\i] \x/\y in {#1}{
            \pgfmathsetmacro{\mycolor}{{\mycolors}[Mod(\i-1,3)]}
            \draw[fill=gray,gray] (0,\i) rectangle (6,\i+0.4);
            \draw[fill=white, \mycolor](0,\i) rectangle (\y,\i+0.4);
            \node [above right] at (0,\i+0.35) {\x};
        }
        \end{tikzpicture}
}

\begin{document}
\labskills{Meowing/4,Purring/3,Catching mice/4,Hibernating/1}
\end{document}

在此处输入图片描述

相关内容