改变树的每一层的色彩和长度

改变树的每一层的色彩和长度

下面是我为树编写的改编代码。当全局设置框的长度时,对齐很好。但是,由于某些框中的文本占用两行,因此需要更多空间。因此,我希望颜色和长度调整按级别进行。我希望每个框中的字母都只有一行,就像代码中那样。请帮忙,谢谢。以下是上面引用的代码:

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tikzset{
    my node style/.style={
        font=\tiny,
        top color=white,
        bottom color=blue!25,
        rectangle,
        rounded corners,
        % minimum size=4mm,
        draw=blue!75,
        very thick,
        drop shadow,
        align=justify,
        % level 2/.style={text width=3.5cm},
    }
}
\forestset{
    my tree style/.style={
        for tree={grow=east,
            parent anchor=east, % <---
            child anchor=west,  % <---
            my node style,
            l sep=1.5em,
            % text width=3.5cm,  %<---turn off all sizing
            %                   text width=5cm,
            forked edge,                % <---
            fork sep=1em,               % <---
            edge={draw=blue!50, thick},                
            if n children=3{for children={
                    if n=2{calign with current}{}}
            }{},
            %       delay={if content={}{shape=coordinate}{}},
            tier/.option=level,
        }
    }
}
\centering
\begin{forest}
    my tree style
    [Inicialização de sistema Acção Y Euro Pallet
    [Inicialização de sistema Acção Y, text width=4cm %<---changed
    [Inicialização de sistema]
    [Inicialização de sistema de sistema]
    [Inicialização de sistema]
    ]
    [Inicialização de sistema Inicialização de sistema Acção Y
    [Inicialização de sistema]
    [Inicialização Inicialização de sistema de sistema]
    [Inicialização de sistema]
    [Inicialização de sistema de sistema de sistema]
    ]
    ]
\end{forest}

\end{document}

图像是:

代码输出

答案1

为了使颜色和文本宽度取决于级别,您可以使用

        where level=0{my node=blue,text width=6em}{},
        where level=1{my node=purple,text width=5em}{},
        where level=2{my node=red,text width=4em}{},

请注意,我稍微重新定义了my node。我不知道这些是否是您想要的文本宽度。

\documentclass[a4paper,10pt]{article}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[edges]{forest}
\usetikzlibrary{shadows}

\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tikzset{
    my node/.style={
        font=\tiny,
        top color=white,
        bottom color=#1!25,
        rectangle,
        rounded corners,
        % minimum size=4mm,
        draw=#1!75,
        very thick,
        drop shadow,
        align=justify,
        % level 2/.style={text width=3.5cm},
    }
}
\forestset{
    my tree style/.style={
        for tree={grow=east,
            parent anchor=east, % <---
            child anchor=west,  % <---
        where level=0{my node=blue,text width=6em}{},
        where level=1{my node=purple,text width=5em}{},
        where level=2{my node=red,text width=4em}{},
            l sep=1.5em,
            % text width=3.5cm,  %<---turn off all sizing
            %                   text width=5cm,
            forked edge,                % <---
            fork sep=1em,               % <---
            edge={draw=blue!50, thick},                
            if n children=3{for children={
                    if n=2{calign with current}{}}
            }{},
            %       delay={if content={}{shape=coordinate}{}},
            tier/.option=level,
        }
    }
}
\centering
\begin{forest}
    my tree style
    [Inicialização de sistema Acção Y Euro Pallet
    [Inicialização de sistema Acção Y%, text width=4cm %<---changed
    [Inicialização de sistema]
    [Inicialização de sistema de sistema]
    [Inicialização de sistema]
    ]
    [Inicialização de sistema Inicialização de sistema Acção Y
    [Inicialização de sistema]
    [Inicialização Inicialização de sistema de sistema]
    [Inicialização de sistema]
    [Inicialização de sistema de sistema de sistema]
    ]
    ]
\end{forest}

\end{document}

在此处输入图片描述

如果您希望文本大小刚好适合一行,请告诉我。这也可以做到。

相关内容