如何自动为单个思维导图节点的子节点分配一系列颜色?

如何自动为单个思维导图节点的子节点分配一系列颜色?

在思维导图中,我们自己定义每个子节点,但我喜欢在父节点中指定子节点的一些属性,其中最重要的属性之一就是它们的颜色。为此,我们可以指定特定级别的节点的颜色应该是什么。但是,我想为特定节点的一组子节点分配一系列颜色,例如,我喜欢指定开始和结束颜色,然后 tikz 会自动创建渐变颜色列表并将其分配给子节点,或者我们定义一个颜色列表,然后父节点从该颜色列表中为其子节点选择任意颜色。颜色就是一个例子,另一个属性可能是子节点的形状,我们可以定义一个特定的可能形状列表,并要求为每个子节点任意分配其中一种形状(每个子节点看起来都不同)。

有什么诀窍可以做到这一点吗?目前,我要么指定每个子节点的颜色,要么让所有子节点都具有相同的颜色。

对于普通的 tikz 节点,当我们自动定义节点本身时,例如使用 for 循环,可以通过采用类似以下技术来分配自动颜色/形状描述在这里,但这显然不适用于思维导图,因为儿童及其文本通常不会自动生成。

答案1

这相当容易。目前 TiZ 看着一个孩子,已知两个相关数字:

  • \tikznumberofcurrentchild是当前子节点的索引,
  • \tikznumberofchildren是孩子的数量,即兄弟姐妹的数量。

此计数器可用于您所描述的目的。以下是颜色的示例,形状可以非常类似地完成。

\documentclass[tikz,border=3mm]{standalone}

\usetikzlibrary{mindmap} 
\begin{document}
\begin{tikzpicture}[auto concept color/.code 2 args={%
\ifnum\tikznumberofchildren=1\relax
\pgfmathtruncatemacro{\mycf}{50}% 
\else
\pgfmathtruncatemacro{\mycf}{100*(\tikznumberofcurrentchild-1)/(\tikznumberofchildren-1)}%
\fi
\tikzset{concept color=#1!\mycf!#2}
}]
\path[mindmap,concept color=black,text=white,
    every child/.append style={auto concept color={blue}{red}}] node[concept] {M}
[clockwise from=0]
child {node[concept] {A}}
child { node[concept] {B}}
child { node[concept] {C} } 
child { node[concept] {D} };
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容