如何在 tikz 中创建具有颜色光谱和阴影的矩形序列?

如何在 tikz 中创建具有颜色光谱和阴影的矩形序列?

我希望在 tikz 中有一种简单的方法来创建一系列矩形(如下所示),其中有一个基色,随着每个矩形堆叠得更低,基色会逐渐褪色(变浅)。矩形应该仅通过每个矩形的宽度和高度来指定,不需要为所有矩形指定绝对位置,因为它们都是堆叠的(尽管我确实需要选择将堆栈放在何处)。

有没有办法在 tikz 中做到这一点,而不用基本上用高度指定的坐标逐个矩形地构建它?

在此处输入图片描述

以下是在 tikz 中生成的示例图像:

只说顶部的第一个矩形会非常红(基色)并且逐渐褪色直到底部的最后一个矩形。

答案1

这是一个宏\rstack[<width>]{<height list>}{<color>}{<top label>}<width>是可选的。默认值为 3cm。<height list>应该是以逗号分隔的矩形高度列表,从后到前(这是绘制它们的顺序)。

在此处输入图片描述

因此\rstack{1.5,5,4,2,1}{red}{$\mathbf{x}_k$}产生左边的堆栈并\rstack[2cm]{4,3,1,2}{blue}{}产生右边的堆栈。

以下是代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shadows}

\newcommand{\rstack}[4][3cm]{\tikz[baseline]{
    \foreach \k[count=\n] in {#2}{\xdef\numrecs{\n}}
    \foreach \k[count=\n, evaluate=\n as \c using \n/\numrecs*100] in {#2}{
        \node[shift={(-\n/4,-\n/4)}, draw, thick, fill=#3!\c, drop shadow, inner sep=0, minimum height=\k cm, minimum width=#1, anchor=north east](r\n) at (0,0){};
    }
    \node at (r\numrecs){#4};
}}

\begin{document}

\rstack{1.5,5,4,2,1}{red}{$\mathbf{x}_k$}\qquad\rstack[2cm]{4,3,1,2}{blue}{}

\end{document}

相关内容